如题。求一个正则表达式,能验证十六进制数,并自动纠正错误
比如我发送一个十六进制数: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();