Chrome更改正则表达式并可以'与下拉列表中的值不匹配
Chrome changes regex and can't match with value from dropdownlist
我的正则表达式有问题,无法获得要验证的值。
我有一个这样的功能:
function validationObject(validationName, validationRegEx) {
this.validationName = validationName;
this.validationRegEx = validationRegEx;
}
它使用所获得的参数创建一个validationObject。对于一个包含数字的下拉列表,我有这样的regex:
'd+
但是,当我用这段代码验证这个正则表达式的值时,它不会起作用:
if (inputValue.match(validatingRegex)) {
doSomeThings();
}
如果我检查validationObject,我会发现Chrome已经将正则表达式更改为/d+/。我尝试过将其设置为regex类型,但也不起作用。这对文本字段有效。在我看来,所有的反斜杠都被转换成了其他的东西。
此外,我还尝试过转义反斜杠,但浏览器只接受文本值。
希望你有答案,谢谢你的帮助!
致问候,
Boyyerd
如果将特殊字符传递给RegExp
构造函数,则需要转义它们:
var expr = new RegExp(somStr.replace(/['-'[']'/'{'}'(')'*'+'?'.'''^'$'|]/g, "''$&"), 'i');
由于您正在传递'd+
,所以backash需要转义,因此应该将''d+
作为构造函数的posing
上面的正则表达式转义所有特殊字符AFAIK。我冒昧地从这里复制了这个表达方式
创建表达式的另一种更简单的方法是使用文字表示法,这种表示法更常见,在JS的调优中更,而且不太容易出错:
var expr = /'d+/;
根本不需要转义字符串。
您可以在控制台中轻松地检查这一点,btw:'''d'在chrome控制台中的计算结果为"d"
,因此将''d+'
传递给RegExp
的计算结果是new RegExp('d+')
,这是一个有效的正则表达式,因此不会引发错误,只是不起同样的作用。
不过,还有一点需要注意:你能澄清一下你的函数的目标是什么吗,因为它不是构造函数(如果是,它的名称应该以UpperCase
字母开头),而且我认为你还没有完全理解this
引用在你的情况下
相关文章:
- 如何使单击时的下拉列表不悬停
- 显示基于第一个下拉列表的第二个下拉列表不起作用
- 引导程序的下拉列表不起作用
- 动态更改的下拉列表不会刷新.(雾虫)
- 引导程序 3 下拉列表不会更新
- 剑道网格编辑内联下拉列表不显示
- 引导程序多选下拉列表不是下拉列表
- 下拉列表不同于手动选择和自动选择
- 下拉列表不起作用
- JavaScript下拉列表不起作用
- 语义 UI 下拉列表不起作用
- 添加选项卡窗格后引导选项卡下拉列表不起作用
- 嵌套下拉列表不起作用
- 引导下拉列表不下降
- 为什么下拉列表不会根据其他值进行更改
- 选择“下拉列表不显示”
- 为什么我的动态下拉列表不起作用
- 依赖下拉列表不起作用
- 依赖下拉列表不起作用
- Bootstrap 3.0:如何使垂直导航栏下拉列表不附加到最后一个列表项