我正在使用正则表达式^4[0-9]{15}$
来检查以4
开头的VISA信用卡信息,这些信息长度为16位。
此表达式接受4141414141414141aa
之类的信用卡号,这是错误的,因为它接受有效信用卡号末尾的字母字符。
我该如何解决这个问题?
答案 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
}