关于这个SO问题,我有一个场景,我只需要匹配包含af的十六进制字符串。所有其他都不应该匹配。例:
checkForHexRegExp.test("112345679065574883030833"); // => false
checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF"); // => false
checkForHexRegExp.test("45cbc4a0e4123f6920000002"); // => true
我的用例是我正在使用一组十六进制字符串,并且只想验证那些是mongodb objectID的字符串为true。
您可以使用以下正则表达式,但效果不佳
checkForHexRegExp = /^(?=[a-f\d]{24}$)(\d+[a-f]|[a-f]+\d)/i
例:
> checkForHexRegExp.test("112345679065574883030833")
false
> checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF")
false
> checkForHexRegExp.test("45cbc4a0e4123f6920000002")
true
但是,正如我评论,112345679065574883030833
,FFFFFFFFFFFFFFFFFFFFFFFF
也是有效的十六进制表示。
您应该使用, /^[a-f\d]{24}$/i
因为它通过了以上所有测试
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句