我尝试将以下代码与 jQuery 结合使用来验证十六进制值字符串,但得到了意外的结果:
var a = new RegExp("0x[a-fA-F0-9]+")
var result = a.test('0x1n')
在这种情况下,result 实际上返回 true。我在这里缺少什么?
最佳答案
您需要 anchor 来匹配字符串的开头和结尾。这将使正则表达式尝试匹配整个字符串,而不是字符串的一部分:
var a = new RegExp("^0x[a-fA-F0-9]+$")
否则,您的正则表达式与 0x1
部分匹配并返回 true
。
另一方面,以下内容会更好一些:
var re = /^0x[a-f0-9]+$/i;
i
标志使其不区分大小写,因此您不必指定 a-f
和 A-F
。
关于javascript - jQuery 正则表达式返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814555/