2013-07-27 18 views
12

Próbuję utworzyć wyrażenie regularne w javascript, aby sprawdzić holenderski kod pocztowy.Wyrażenie regularne dla holenderskiego kodu pocztowego/kod pocztowy

kod pocztowy powinien zawierać 4 cyfr, następnie ewentualnie na powierzchni, a następnie 2 (przypadek niewrażliwe) litery

Prawidłowe wartości:

1001aa 
1001Aa 
1001 AA 

teraz mieć, ale to nie działa:

var rege = /^([0-9]{4}[ ]+[a-zA-Z]{2})$/; 
+1

Używasz przerw w przestrzeni, używasz ich do definiowania zakresu znaków np. '[0-6]' robi od 0 do 6. Wystarczy zastąpić je '' (spacją i znakiem zapytania, aby uczynić go opcjonalnym – Martijn

+4

Odłożyć na bok: holenderskie kody pocztowe nigdy nie zaczynają się od zera – Arjan

+3

Nie ma również kodów pocztowych kończących się na SS, SA lub SD. – Bart

Odpowiedz

39

Edytowany pod kątem holenderskich kodów pocztowych bez wymagań 0 wiodących i eliminowania dopasowań dla SS, SA i SD. To powinno zrobić to wszystko dla ciebie.

Finał regex: test jednostka

var rege = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i; 

Fiddle: http://jsfiddle.net/hgU3u/

Oto podział:

  1. ^ mecze początek napisu
  2. [1-9][0-9]{3} dopasowuje pojedynczy niezerowe cyfry i trzy 0-9 cyfr
  3. ? mecze 0 lub 1 obowiązuje (można użyć * dopasować 0 lub więcej spacji)
  4. (?!sa|sd|ss) jest test uprzedzona, aby sprawdzić, że reszta nie jest „sa”, „SD” lub „ss”.
  5. [a-z]{2} mecze 2a-Z znaków
  6. $ dopasowuje koniec napisu
  7. i w końcu jest wielkość liter modyfikator
+0

Tak, to również jest poprawne rozwiązanie. A + w regex to jedno lub więcej "trafień" poprzedniego wyrażenia znakowego (lub wzorca w nawiasach). –

5

Oto moje rozwiązanie. I w końcu sprawia, że ​​wielkość liter:

var rege = /^\d{4} ?[a-z]{2}$/i; 
1

w przypadku gdy masz problemy z korzystaniem to jako wzorzec dla bootstrap walidacji Proponuję go zmienić na:

^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$ 

ten sposób jest nadal sprawa -wrażliwe i akceptowane przez walidator bootstrap.