 悬赏园豆:10
                [已关闭问题] 
            
                    关闭于 2013-11-05 15:11
                悬赏园豆:10
                [已关闭问题] 
            
                    关闭于 2013-11-05 15:11
                 
        如题。求一个正则表达式,能验证十六进制数,并自动纠正错误
比如我发送一个十六进制数:adt 12 ce 63 02251 2634
然后经过正则表达式纠正后 :AD 12 CE 63 02 25 01 26 34
十六进制的合法字符为:0-9,a-z,A-Z,检查源字符是否合法:^([0-9|a-z|A-Z]*)$,然后根据使用的语言选择处理源字符串的方式
单单一条表达式 是做不了的
估计要用表达式进行匹配 分组 拆分 替换 结合 才能完成
下面我把方法写下来,结贴!
string str="adt 12 ce 63 02251 2634";
    str=Regex.Replace(Regex.Replace(str,@"(?i)[^a-f\d\s]+",""),"\\w{3,}",                            m=>string.Join(" ",Regex.Split(m.Value,@"(?<=\G\w{2})(?!$)").Select(x=>x.PadLeft(2,'0')).ToArray())).ToUpper();    Console.WriteLine(str); //ad 12 ce 63 02 25 01 26 34这个牛逼!!!
String str = "adt 12 ce 63 02251 26342".replaceAll("[^0-9abcdef]*([0-9abcdef])[^0-9abcdef]*([0-9abcdef]?)[^0-
9abcdef]*", "$1$2 ").trim().toUpperCase();