【问题标题】:why is regex constructor not working? [duplicate]为什么正则表达式构造函数不起作用? [复制]
【发布时间】:2014-05-10 10:13:20
【问题描述】:

我在回答一个问题,下面返回false

var regexp = new RegExp("([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})");
var result = regexp.test( $("#email").val() ); // returns false

虽然

var regexp = /([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/;
var result = regexp.test( $("#email").val() ); // returns true

为什么会这样??

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    使用RegExp构造函数时需要转义\

    new RegExp("([\\w\\.-]+)@((?:[\\w]+\\.)+)([a-zA-Z]{2,4})");
    

    引用MDN's RegExp constructor Docs

    当使用构造函数时,正常的字符串转义规则(包含在字符串中的特殊字符前面带有\)是必要的。例如,以下是等价的:

    var re = /\w+/;
    var re = new RegExp("\\w+");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2014-06-01
      • 2020-03-31
      • 2011-08-16
      • 1970-01-01
      • 2015-11-02
      相关资源
      最近更新 更多