为什么正则表达式构造函数不起作用

why is regex constructor not working?

本文关键字:不起作用 构造函数 正则表达式 为什么      更新时间:2023-09-26

我正在回答一个问题,以下内容返回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

为什么??

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

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

引用MDN的RegExp构造函数文档,

使用构造函数时,需要正常的字符串转义规则(当包含在字符串中时,在特殊字符前面加上 '')。例如,以下内容是等效的:

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