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

时间:2012-07-27 22:33:20

标签: javascript regex

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

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果您使用的是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

答案 1 :(得分:0)

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

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

} else {
    // No match

}

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