Это будет проверять два 5-значных чисел, разделенных запятой
^\d{5},\d{5}$
Но вы сказали, по крайней мере два, так это означает, что она должна быть немного более гибкий, чтобы разместить больше. Если пользователь вводит 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-9999, 12345
В качестве бонуса, скажем 12345, 12345
является недействительным, поскольку он имеет тот же почтовый индекс дважды. Вот как мы исправим
(?:(\d{5}),?)(?!.*\1)
И вот зип +-версии
(?:(\d{5}(?:-\d{4})?),?)(?!.*\1(?!-))
Это один имеет немного дополнительную сложность из-за возможности (например,) 12345, 12345-9999
. Это верно, но поскольку 12345
может появляться более одного раза, он гарантирует, что 5-значный почтовый индекс не может быть аннулирован уникальным 9-значным почтовым индексом.
Примечание: эти повторяющиеся регулярные выражения не обеспечивают минимум двух уникальных почтовых индексов. Если вы хотите проверить наличие дубликатов, вам необходимо объединить их.
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;
};
красивые диаграммы, вы используете приложение для автоматической генерации этих? – Tony