2013-04-02 26 views
5

Próbuję dodać proste sprawdzanie poprawności wyrażenia regularnego do jednego z moich obserwowalnych przy użyciu sprawdzania poprawności Knockout-Validation.Sprawdzanie poprawności Knockout za pomocą wyrażenia regularnego w celu sprawdzenia poprawności numeru telefonu

mam następujące: „Nieprawidłowy numer telefonu”

self.ContactPhone = ko.observable().extend({ 
      required: true, 
      pattern: { 
       message: 'Invalid phone number.', 
       params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$' 
      } 
     }); 

Jednak bez względu na to, co mam wpisać, to zwraca wiadomość Czy jest jakiś sposób, aby sformatować wyrażenie? Przetestowałem to używając wyłącznie JavaScript i działa dobrze.

Odpowiedz

10

Musisz uciec przed swoimi tylnymi ukośnikami, w przeciwnym razie javascript traktuje twój ukośnik jako samą postać ucieczki dla następnej postaci. Jest tak dlatego, że jest to ciąg znaków, a nie wyrażenie regularne.

Edit: Właściwie ja tylko sprawdzone, a może po prostu użyć wyrażenia regularnego, a nie dosłowne, więc jeden z nich zrobi to:

http://jsfiddle.net/antishok/ED3Mh/2/

self.ContactPhone = ko.observable().extend({ 
    required: true, 
    pattern: { 
     message: 'Invalid phone number.', 
     params: /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/    
    } 
}); 

lub:

params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$' 
4

Jeśli nie musisz używać Wyrażenia regularnego, tutaj jest natywny sposób

self.ContactPhone = ko.observable().extend({ phoneUS : true }); 

Więcej informacji pod numerem here.

+0

Wiesz dlaczego 'phoneUS 'nie jest wymienione na oficjalnej stronie Knockout Validation - https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules? –

0

Patrz przykład poniżej pracujący w jsfiddle za pomocą wyrażenia regularnego, które pozwala spacje i + i() wraz z numerem poniższy link

jsfiddle.net/JoelDerrick/f6g8npv6/1/

Powiązane problemy