正規表現を使用して、VISA^4[0-9]{15}$
から始まる 16 桁のクレジット カード情報を確認しています。4
この式は4141414141414141aa
、有効なクレジット カード番号の末尾にあるアルファベット文字を受け入れるため、 which is wrong のようなクレジット カード番号を受け入れます。
これを修正するにはどうすればよいですか?
正規表現を使用して、VISA^4[0-9]{15}$
から始まる 16 桁のクレジット カード情報を確認しています。4
この式は4141414141414141aa
、有効なクレジット カード番号の末尾にあるアルファベット文字を受け入れるため、 which is wrong のようなクレジット カード番号を受け入れます。
これを修正するにはどうすればよいですか?
Javaで作業している場合、アンカーは^
and$
ではなく、\A
and\z
であるため、正規表現は次のようになります。
"\\A4[0-9]{15}\\z"
また
"\\A4\\d{15}\\z"
Javascriptでは、アンカーは実際に正規表現^
を作成する必要があります。$
/^4\d{15}$/
私のFirebugJavascriptコンソールでテストしました:
>>> 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
}