2009-09-16 8 views
8

Mam podobny problem, jak mój ostatni wpis, ale z weryfikatorem kodu pocztowego staram się przekonwertować do procesu sprawdzania poprawności javascript. mój skrypt wygląda tak:JavaScript Wyrażenie regularne, aby dopasować 5 lub 9-cyfrowy kod pocztowy

var regPostalCode = new RegExp("\\d{5}(-\d{4})?"); 
    var postal_code = $("input[name='txtzipcode']").val(); 
    if (regPostalCode.test(postal_code) == false) { 
     bValid = false; 
     msg = msg + '<li>Invalid Zip Code.</li>'; 
    } 

Z mojego ostatniego posta dowiedziałem się o postaci ucieczki, której potrzebowałem na początku. Zasadniczo ta funkcja sprawdza poprawność kodu pocztowego, czyli 22601, który jest poprawny, ale nie powinien potwierdzać 22601-1. Po kresce powinny być 4 cyfry, jak 22601-9999. To tak, jakby druga część sprawdzania poprawności była zawsze prawdziwa. Ponownie to wyrażenie zadziałało w przeszłości dla mnie. Czy czegoś brakuje? Czy potrzebna jest inna postać ucieczki?

Odpowiedz

16

Dodaj kotwice: new RegExp("^\\d{5}(-\\d{4})?$"). Zmusza to mechanizm wyrażeń regularnych do akceptowania tylko dopasowania, jeśli zaczyna się od pierwszego znaku ciągu (^) i kończy na końcu dopasowywanego ciągu znaków ($).

Pamiętaj, że w wyrażeniu regularnym, które podałeś w swoim pytaniu, może wystąpić literówka: w drugim numerze \d brakuje odwrotnego ukośnika.

+0

To była poprawka. Bez literówki, po prostu kolejny błąd. Dzięki za wyjaśnienie, a także rozwiązanie. –

1

Zmień regex:

new RegExp("^\\d{5}(-\\d{4})?$") 
-1

I musi być brakuje czegoś tutaj:

Ten regex:

var regExUs = /^\\d{5}(-\\d{4})?$/; 

zwraca NULL przy pomocy ważnego Kod pocztowy:

console.log(regExUs.exec("34561-1201")); 
null 
Powiązane problemy