1

我正在使用正则表达式来检查以 VISA^4[0-9]{15}$开头且长度为 16 位的信用卡信息。4

此表达式接受错误的信用卡号4141414141414141aa,因为它接受有效信用卡号末尾的字母字符。

我该如何解决?

4

2 回答 2

0

如果您使用 Java,则锚点不是^and $,而是\Aand \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
于 2012-07-27T22:39:54.450 回答
0

您可以使用\b来匹配 JavaScript 中单词的开头和结尾。所以它可以是:

if (/\b4\d{12}(?:\d{3})?\b/.test(subject)) {
    // Successful match

} else {
    // No match

}

根据http://tools.twainscanning.com/getmyregex

于 2015-12-01T07:58:19.550 回答