Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome更改regex和can';与dropdownlist中的值不匹配_Javascript_Regex_Google Chrome_Html Select - Fatal编程技术网

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中会做什么:请考虑使用< <代码> < <代码> >的注释。我的猜测是,如果你要写
“严格使用”
在整个脚本的第一行,或者甚至作为函数中的第一条语句,脚本都将失败:使用
引用引用全局对象,隐含全局变量。。。