これは、コンマで区切られた 2 つの 5 桁の数字をチェックします。
^\d{5},\d{5}$

しかし、あなたは少なくとも2 つとおっしゃいました。それは、より多くに対応できるようにもう少し柔軟にする必要があることを意味します。ユーザーが入力12345,12345,12345
する場合、有効である必要があります。
^\d{5}(?:,\d{5})+$

ユーザーがコンマの後にスペースを追加するとどうなりますか? など12345, 12345
。これは完全に有効なので、バリデーターがそれを許可していることを確認しましょう。
^\d{5}(?:,\s*\d{5})+$

ああ、郵便番号にもオプションの-1234
末尾を付けることができます ( ZIP+4として知られています。このようなものが必要になる場合があります)
^\d{5}(?:-\d{4})?(?:,\s*\d{5}(?:-\d{4})?)+$

これで、このような文字列が有効になります
- 12345
- 12345、12345、12345
- 12345、12345-9999、12345
おまけとして12345, 12345
、同じ郵便番号が 2 回あるため、 は無効であるとしましょう。これを修正する方法は次のとおりです
(?:(\d{5}),?)(?!.*\1)

そしてこちらがZIP+4版
(?:(\d{5}(?:-\d{4})?),?)(?!.*\1(?!-))

これは、 (eg,) の可能性があるため、少し複雑になり12345, 12345-9999
ます。これは有効ですが、12345
複数回表示される可能性があるため、一意の 9 桁の郵便番号によって 5 桁の郵便番号が無効にされないようにします。
これらの重複チェック正規表現は、最小 2 つの一意の郵便番号を強制しないことに注意してください。重複をチェックしたい場合は、2 つを組み合わせる必要があります。
var valid5DigitZipCodes = function(str) {
if (! /^\d{5}(?:,\s*\d{5})+$/.test(str)) {
alert("You need at least 2 zip codes");
return false;
}
else if (! /(?:(\d{5}),?)(?!.*\1)/.test(str)) {
alert("You entered a duplicate zip code");
return false;
}
return true;
};
そして、これをサポートしたい場合は、これが ZIP+4 バリアントです
var valid9DigitZipCodes = function(str) {
if (! /^\d{5}(?:-\d{4})?(?:,\s*\d{5}(?:-\d{4})?)+$/.test(str)) {
alert("You need at least 2 zip codes");
return false;
}
else if (! /(?:(\d{5}(?:-\d{4})?),?)(?!.*\1(?!-)).test(str) {
alert("You entered a duplicate zip code");
return false;
}
return true;
};