我想使用正则表达式来获取和删除信用卡号。我找到了以下正则表达式并对其进行了测试:
^(?: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仅显示原始文本。
我在这里做错了什么?
谢谢。
答案 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)