由于模式是字符串,正则表达式不起作用

我正在使用一个框架,在框架工作中,mat的正则表达式就像这样的字符串var regex = "/^0(9|4)\d{8}$/"; 当我尝试工作,我无法工作这是有任何方式,字符串可以转换为正常RegEx https://plnkr.co/edit/Yjch7G7npkHmtKYDF5Yc?p=preview

当我尝试使用这个新的RegExp将我的表达式从此更改为

 /^0(9|4)d{8}$/ 

这个

 /\/^0(9|4)d{8}$\// 

因为这种转变

 new RegExp($(element).attr("data-regex")); = /\/^0(9|4)d{8}$\// 

您可以使用RegExp构造函数 ,然后使用.test()方法

 var regex = "/^0(9|4)\d{8}$/"; regex = regex.substring(1, regex.length-1); console.log(regex); var patt = new RegExp(regex, "g"); var res = patt.test("04dddddddd"); console.log(res); 

阅读完代码后,我认为这应该为您展示解决方案的核心

 function strToRegExp(str) { var split = str.split('/'); var flags = split.pop(); var discard = split.shift(); return new RegExp(split.join('/'), flags); } document.querySelectorAll('.test').forEach(div => console.log(strToRegExp(div.textContent).test('0912345678')) ); 
 
/(09|04)\d{8}/g
/^0(9|4)\d{8}$/

尝试删除双引号并替换为html编码字符。 这样JavaScript不会使用双引号作为其语言解释的一部分。

尝试使用ascii值" 为“或你可以使用"

只是摆脱"你的表达应该是这样的

 var regex =new RegExp(/^0(9|4)\d{8}$/); var regex2 = new RegExp(/(09|04)\d{8}/g);