首页 > 解决方案 > Javascript常规Eypression不起作用

问题描述

我写了一个正则表达式:

var mobileNumberRegex = new RegExp("((01)\d\d\d?)|(([+]491)\d\d\d?)|((00?49)\d\d\d\d?)");

我用这段代码测试它:

mobileNumberInput.addEventListener('keyup', function(e) {
    console.log(mobileNumberRegex.test(e.target.value));
    if(mobileNumberRegex.test(e.target.value)) {
      console.log('Hurrraaa');
    } else {
      console.log('Ohjeee');
    }
  });

但是每个输入都返回错误。(例如:0177、+49177、049163)

当我在在线测试工具上尝试此输入时,它正在工作:

https://regexr.com/3v1uu

标签: javascriptregex

解决方案


您的请求表达式位于字符串文字内,因此在将字符串文字解析为字符串时会使用转义序列。

传递给RexExp构造函数的结果是d字符而不是\d数字序列。

改用正则表达式文字:

var mobileNumberRegex = /((01)\d\d\d?)|(([+]491)\d\d\d?)|((00?49)\d\d\d\d?))/;

推荐阅读