Javascript正则表达式过滤十六进制数

时间:2015-03-23 15:32:31

标签: javascript regex

如果字符串是0x3f(例如)格式的有效十六进制数,我需要检查。

var strRegex="0[xX][0-9a-fA-F]+";
var re = new RegExp(strRegex);
if (!re.test(theAddress) {.... error alert stuff... }

正如我现在所做的那样,它接受像0x3q这样的东西等等。

我应该使用什么正则表达式?

2 个答案:

答案 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}}锚点,但这只有在字符串只包含一个十六进制值时才有效。带有字边界的解决方案也匹配包含一个(或多个)十六进制值的字符串。