我正在使用正则表达式来检查以 VISA^4[0-9]{15}$
开头且长度为 16 位的信用卡信息。4
此表达式接受错误的信用卡号4141414141414141aa
,因为它接受有效信用卡号末尾的字母字符。
我该如何解决?
我正在使用正则表达式来检查以 VISA^4[0-9]{15}$
开头且长度为 16 位的信用卡信息。4
此表达式接受错误的信用卡号4141414141414141aa
,因为它接受有效信用卡号末尾的字母字符。
我该如何解决?
如果您使用 Java,则锚点不是^
and $
,而是\A
and \z
,因此您的正则表达式将是
"\\A4[0-9]{15}\\z"
或者
"\\A4\\d{15}\\z"
在 Javascript 中,锚点确实应该是^
并$
制作正则表达式:
/^4\d{15}$/
在我的 Firebug Javascript 控制台中测试:
>>> var val1='4141414141414141';
>>> var val2='4141414141414141aa';
>>> /^4\d{15}$/.test(val1);
true
>>> /^4\d{15}$/.test(val2);
false
您可以使用\b
来匹配 JavaScript 中单词的开头和结尾。所以它可以是:
if (/\b4\d{12}(?:\d{3})?\b/.test(subject)) {
// Successful match
} else {
// No match
}