首页 新闻 会员 周边 捐助

求一个正则表达式验证十六进制字符串

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-11-05 15:11

如题。求一个正则表达式,能验证十六进制数,并自动纠正错误
比如我发送一个十六进制数:adt 12 ce 63 02251 2634
然后经过正则表达式纠正后 :AD 12 CE 63 02 25 01 26 34

名字还没想好的主页 名字还没想好 | 初学一级 | 园豆:159
提问于:2013-10-23 15:20
< >
分享
所有回答(4)
0

十六进制的合法字符为:0-9,a-z,A-Z,检查源字符是否合法:^([0-9|a-z|A-Z]*)$,然后根据使用的语言选择处理源字符串的方式

HorsonJin | 园豆:158 (初学一级) | 2013-10-23 15:44
0

单单一条表达式 是做不了的

估计要用表达式进行匹配 分组 拆分 替换 结合 才能完成

Yu | 园豆:12990 (专家六级) | 2013-10-23 21:41
0

下面我把方法写下来,结贴!

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
名字还没想好 | 园豆:159 (初学一级) | 2013-11-05 15:09

这个牛逼!!!

支持(0) 反对(0) Lthis | 园豆:400 (菜鸟二级) | 2016-03-09 18:24
0
String str = "adt 12 ce 63 02251 26342".replaceAll("[^0-9abcdef]*([0-9abcdef])[^0-9abcdef]*([0-9abcdef]?)[^0-

9abcdef]*", "$1$2 ").trim().toUpperCase();

 

adai_m | 园豆:172 (初学一级) | 2016-11-21 23:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册