由于模式是字符串,正则表达式不起作用
我正在使用一个框架,在框架工作中,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);