2011-12-22 12 views
5

usiłuję do sprawdzania poprawności pola o nazwie phone_number z tych zasad.JavaScript regexp przy użyciu val() metoda match()

pierwsza cyfra powinna być 3 następnie kolejne 9 cyfr więc w sumie przykład 10 numerem: 3216549874

lub mogą być 7 numery 1234567

tu mam swój kod.

 if (!($("#" + val["htmlId"]).val().match(/^3\d{9}|\d{7}/))) 
      missing = true; 

Dlaczego nie robi praca :(kiedy kładę to na line z regexp sprawdzania pokazuje dobry

+0

kilku zbyt wiele "val"? val [] i val() – mplungjan

Odpowiedz

6

należy używać testu zamiast meczu i oto właściwy kod:

.test(/^(3\d{9}|\d{7})$/) 

Mecz będzie znaleźć wszystkie wystąpienia, podczas gdy testy będą tylko sprawdzić, aby zobaczyć, jeśli co najmniej jeden jest dostępny (a więc potwierdzanie twojego numeru).

+0

OK będę testować dzięki – alexistkd

+0

if (! ($ ("#" + val ["htmlId"]) .val(). test (/^(3 \ d {9} | \ d {7}) $ /))) nie działa – alexistkd

+0

to masz problem z kodem jQuery, przetestuj w konsoli Firebug tak: ' 3216549874'.test (/^(3 \ d {9} | \ d {7}) $ /) – alessioalex

1

Spróbuj, to jest trochę bardziej surowe.

.match(/^(3\d{9}|\d{7})$/) 
+0

Cant get working :( – alexistkd

+0

działa idealnie popełniłem błąd :) teraz jego poprawne – alexistkd

2

Nie daj się pomylić z rurą. Musi kończyć każdy wyraz

if (!($("#" + val["htmlId"]).val().match(/^3\d{9}/|/\d{7}/))) 
      missing = true; 

http://jsfiddle.net/alfabravoteam/e6jKs/

+0

nie mogę dostać pracy :(I umieścić go tak samo jak u – alexistkd

+0

jesteś pewien, że id starasz ma rację? – Alfabravo

+0

tak, mam inną regułę jak /.+/ i działa to również, jeśli (! ($ ("#" + Val ["htmlId"]). Val(). Match (/ [a-zA-Z] | \ d {1,12} /))) – alexistkd

2

miałem podobny problem i moje rozwiązanie było napisać to lubią:

if (/^(3\d{9}|\d{7})$/.test($("#" + val["htmlId"]).val()) == false) { 
    missing = true; 
} 
Powiązane problemy