替换为javascript正则表达式不起作用

时间:2018-09-25 10:34:08

标签: javascript regex replace

我想使用正则表达式来获取和删除信用卡号。我找到了以下正则表达式并对其进行了测试:

^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$

使用正则表达式评估程序(例如www.regexr.com)可以正确匹配。

当我尝试将其插入我的代码时,它不起作用:

var daRex = /^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/
daText = "Testing REGEX 123 4387000500875798";
daText = daText.replace(daRex, '');

打印daText仅显示原始文本。

我在这里做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

您必须使用正确的正则表达式定界符/
您还需要删除^$,否则它们仅在整行上匹配。

最后但并非最不重要的是, 你要 replacedText = daText.replace(daRex, ''); 并不是 daText = replacedText.replace(daRex, '');

var daRex = /(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})/
daText = "Testing REGEX 123 4387000500875798";
replacedText = daText.replace(daRex, '');
console.log(replacedText)