信用卡信息的正则表达式不应允许使用字符

Regular Expression for Credit card information should not allow characters

本文关键字:许使用 字符 信息 正则表达式 信用卡      更新时间:2024-04-14

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

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

我该如何解决这个问题?

如果您使用Java,锚点不是^$,而是'A'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

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

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

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