Olası Yineleme:
Nihai posta kodu ve zip normal ifadesi nedir?
Posta kodu için üç koşulumu da karşılayabilecek Regex'e ihtiyacım var. Örneğin-
- 12345
- 12345-6789
- 12345 1234
Herhangi bir işaret ve öneri çok takdir edilecektir. Teşekkürler !
Olası Yineleme:
Nihai posta kodu ve zip normal ifadesi nedir?
Posta kodu için üç koşulumu da karşılayabilecek Regex'e ihtiyacım var. Örneğin-
Herhangi bir işaret ve öneri çok takdir edilecektir. Teşekkürler !
Yanıtlar:
^\d{5}(?:[-\s]\d{4})?$
^
= Dizenin başlangıcı.\d{5}
= 5 basamakla eşleş (1, 2, 3 koşulu için)(?:…)
= Gruplama[-\s]
= Bir boşlukla (koşul 3 için) veya bir kısa çizgiyle (koşul 2 için) eşleş\d{4}
= 4 basamakla eşleştir (koşul 2, 3 için)…?
= Önündeki desen isteğe bağlıdır (koşul 1 için)$
= Dizenin sonu.\s
sekmeler ve yeni satırlar dahil herhangi bir boşlukla eşleşir.
00544
geçerli bir posta kodudur; 544
değil.
/(^\d{5}(?:[\s]?[-\s][\s]?\d{4})?$)/
Yalnızca listelenen üç koşul için bu ifadeler de işe yarayabilir:
^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$
5 ile 4 basamak arasında beklenmedik ek boşluklar veya sürekli 9 basamaklı posta kodumuz olsaydı, örneğin:
123451234
12345 1234
12345 1234
bu ifade örneğin daha az kısıtlamaya sahip ikincil bir seçenek olabilir:
^\d{5}([-]|\s*)?(\d{4})?$
jex.im, normal ifadeleri görselleştirir:
const regex = /^\d{5}[-\s]?(?:\d{4})?$/gm;
const str = `12345
12345-6789
12345 1234
123451234
12345 1234
12345 1234
1234512341
123451`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Bunun, RegEx'i sık kullanan çoğu insan için açık olabileceğini biliyorum, ancak herhangi bir okuyucunun RegEx'e yeni girmesi durumunda, projelerimden biri için yararlı olan yaptığım bir gözlemi belirtmem gerektiğini düşündüm.
@Kennytm'den bir önceki yanıtta:
^\d{5}(?:[-\s]\d{4})?$
...? = Önündeki desen isteğe bağlıdır (koşul 1 için)
Hem standart 5 basamaklı hem de +4 posta kodlarına izin vermek istiyorsanız, bu harika bir örnek.
Yapmam gerektiği gibi yalnızca ABD 'Zip + 4' biçimindeki posta kodlarını eşleştirmek için (yalnızca koşullar 2 ve 3), sonuncuyu kaldırmanız yeterlidir, ?
böylece her zaman son 5 karakter grubuyla eşleşir.
RegEx ile uğraşmak için önerdiğim kullanışlı bir araç aşağıda bağlantılıdır:
İhtiyaç duyduğuma benzer bir şey yapan ancak biraz daha iyi uyarlanabilen RegEx'i bulduğumda bu aracı sık sık kullanıyorum. Ayrıca, değişikliklerinizin girdiğiniz örnek metin için eşleşmeleri nasıl etkilediğinin farkında olmanızı sağlayan şık bir RegEx referans menüsü ve bilgilendirici bir arayüze sahiptir.
Yanlış bir şey alırsam veya önemli bir bilgiyi kaçırırsam, lütfen beni düzeltin.
\d{5}([ \-]\d{4})?
.