我尝试为这种格式创建一个正则表达式:
" 0x3E的,0XFF,0X32,0xaB"
字符串必须开始" 0"之后" x"或" X"之后,以十六进制表示的2位数(大写与否)以及之后的#34;,"
字符串结束时没有",";
这就是我到目前为止"(0 [xX] [a-fA-F0-9] {2},)+"
但它没有用......
答案 0 :(得分:2)
您可以尝试使用以下正则表达式:
/^(0x[0-9a-f]{2})(,0x[0-9a-f]{2})*$/i
答案 1 :(得分:1)
问题没有概述为什么你需要这样做,但我可以想象你最终想要从逗号分隔的字符串中解析出有效的十六进制数字。在这种情况下,在我看来,像这样的东西比正则表达式更容易,更强大:
'0x3E,0xFf,0X32,0xaB,0xxaB,xyz'.split(',').filter(function(token) { return parseInt(token, 16); });
//returns ["0x3E", "0xFf", "0X32", "0xaB"]
如果您真的只是想检查所有值是否都是有效的十六进制,请将filter
替换为every
:
'0x3E,0xFf,0X32,0xaB'.split(',').every(function(token) { return parseInt(token, 16); });
//returns true
'0x3E,0xFf,0X32,0xaB,xyz'.split(',').every(function(token) { return parseInt(token, 16); });
//returns false