Javascript Chrome更改regex和can';与dropdownlist中的值不匹配
我在使用正则表达式时遇到问题,无法获取要验证的值 我有这样一个函数:Javascript Chrome更改regex和can';与dropdownlist中的值不匹配,javascript,regex,google-chrome,html-select,Javascript,Regex,Google Chrome,Html Select,我在使用正则表达式时遇到问题,无法获取要验证的值 我有这样一个函数: function validationObject(validationName, validationRegEx) { this.validationName = validationName; this.validationRegEx = validationRegEx; } 它使用获取的参数创建validationObject。对于包含数字的dropdownlist,我有以下正则表达式: \d+
function validationObject(validationName, validationRegEx) {
this.validationName = validationName;
this.validationRegEx = validationRegEx;
}
它使用获取的参数创建validationObject。对于包含数字的dropdownlist,我有以下正则表达式:
\d+
但是,当我用这段代码验证这个正则表达式的值时,它将不起作用:
if (inputValue.match(validatingRegex)) {
doSomeThings();
}
如果我检查validationObject,我会看到Chrome已经将regex更改为/d+/。我尝试将它设置为正则表达式类型,但也不起作用。这对文本字段有效。在我看来,所有的反斜杠都转换成了其他的东西
我也尝试过转义反斜杠,但是浏览器只接受文本值
希望你有答案,谢谢你的帮助
致以最良好的祝愿
如果要将特殊字符传递给
RegExp
构造函数,则需要对其进行转义:
var expr = new RegExp(somStr.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), 'i');
由于您正在传递\d+
,反灰需要转义,因此您应该将\\d+
传递给构造函数。上面的正则表达式可以逃避所有特殊字符。我冒昧地复制了这个表达式。
创建表达式的另一种更简单的方法是使用文字符号,它更常见,更符合JS,也更不容易出错:
var expr = /\d+/;
根本不需要转义字符串
您可以在控制台中轻松地检查这一点,顺便说一句:“\d”在chrome控制台中计算为“d”
,因此将“\d+”
传递到RegExp
将计算为new RegExp('d+)
,这是一个有效的regex,因此不会抛出错误,只是做了不同的事情
不过,还有一点需要注意:您能否澄清一下函数的目标是什么,因为它不是构造函数(如果是,它的名称应该以
大写字母开头),我不认为你完全理解了< <代码> > <代码> >在你的案例 @ PoyYeRD中会做什么:请考虑使用< <代码> < <代码> >的注释。我的猜测是,如果你要写“严格使用”
在整个脚本的第一行,或者甚至作为函数中的第一条语句,脚本都将失败:使用此
引用引用全局对象,隐含全局变量。。。