如果字符串是0x3f(例如)格式的有效十六进制数,我需要检查。
var strRegex="0[xX][0-9a-fA-F]+";
var re = new RegExp(strRegex);
if (!re.test(theAddress) {.... error alert stuff... }
正如我现在所做的那样,它接受像0x3q这样的东西等等。
我应该使用什么正则表达式?
答案 0 :(得分:2)
将锚点放在正则表达式周围:
var strRegex = "^0[xX][0-9a-fA-F]+$";
答案 1 :(得分:0)
我会在模式周围添加单词边界\b
:
var re = new RegExp("\b0[xX][0-9a-fA-F]+\b");
如果你错过了它们,字符串0x3q
也会匹配,因为它包含与模式匹配的0x3
。使用\b
只有0x3
才能匹配,
,如果它被空格包围,则选中字符串;
的开头或结尾,^
等。
其他人建议使用$
和{{1}}锚点,但这只有在字符串只包含一个十六进制值时才有效。带有字边界的解决方案也匹配包含一个(或多个)十六进制值的字符串。