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

Javascript regex to filter hexadecimal number

本文关键字:十六进制数字 过滤 正则表达式 Javascript      更新时间:2023-09-26

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

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

正如我现在所拥有的,它接受像0x3q之类的东西

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

在正则表达式中放置锚点:

var strRegex = "^0[xX][0-9a-fA-F]+$";

我会把单词边界'b放在模式周围:

var re = new RegExp("'b0[xX][0-9a-fA-F]+'b");

如果您错过了它们,字符串0x3q也会匹配,因为它包含与模式匹配的0x3。使用'b时,只有当它被空格、制表符,;等字符串的开头或结尾包围时,它才会匹配0x3

其他人建议使用^$锚,但只有当字符串只包含一个十六进制值时,这才有效。具有单词边界的解决方案还匹配包含一个(或多个)十六进制值的字符串。