2010-03-05 19 views
11

Muszę zweryfikować numer telefonu w javascript. Wymagania są:Sprawdzanie numeru telefonu Javascriptu

powinny one być 10 cyfr, nie przecinek, brak kreski, tylko numery, a nie 1+ przed

to co napisałem dotychczas

, ale oczywiście to nie działa. Jak mogę napisać funkcję validatePhone(), aby działała?

+6

Co za nieprzyjazny system. Niech ludzie wprowadzają spacje i myślniki, a następnie je ignorują. A co z międzynarodowymi numerami telefonów? – Quentin

+0

To wygląda na zadanie szkolne. Do poważnego użytku nie należy * używać wyrażeń regularnych do [poprawnego sprawdzania poprawności numerów telefonów] (http://stackoverflow.com/a/4338544/1269037). –

+0

@DanDascalescu Właściwie w tamtym czasie nie była to szkoła. Po prostu głupia robota na RentACoder –

Odpowiedz

29
phone = phone.replace(/[^0-9]/g, ''); 
if(phone.length != 10) { 
    alert("not 10 digits"); 
} else { 
    alert("yep, its 10 digits"); 
} 

Pozwoli to zweryfikować i/lub skorygować na podstawie wymagań, usunięcie wszystkich nie-cyfr.

+1

Dlaczego po prostu nie użyć dopasowania? – Marius

+5

jak powiedziałem "sprawdzanie poprawności i/lub poprawianie", dlaczego nie tylko dopasować. Jest dość kiepski w obsłudze, aby zmusić kogoś do wpisania numeru telefonu lub spacji, gdy są one tak łatwe do usunięcia. – Erik

+0

dziękuję, bardzo podoba mi się "poprawny" regex :-) –

0

Stała funkcja:

function validateForm(thisform) { 
     if (validatePhone(thisform.phone,"Invalid phone number")==false) { 
      thisform.phone.focus(); 
      return false; 
     } 
     return true; 
} 
+0

zapomniałem dołączyć (thisform) na początku funkcji, ale tak naprawdę to napisałem) –

+1

Ale masz też dodatkowy symbol "}" – antyrat

7

Można użyć wyrażeń regularnych:

function validatePhone(field, alerttext) { 
    if (field.match(/^\d{10}/)) { 
     return true; 
    } 
    alert(alerttext); 
    return false; 
} 
+0

Nie należy * w rzeczywistości używać wyrażeń regularnych do [poprawnego sprawdzania poprawności numerów telefonów] (http://stackoverflow.com/a/4338544/1269037). –

+0

Jego wymóg mówi, że powinien sprawdzić 10-cyfrowy format bez niczego innego. Tak więc kontrola wyrażeń regularnych powinna być w porządku. Masz rację: nie lubię aplikacji, które zmuszają mnie do określonego formatu numeru telefonu. Sprawdzanie minimalnej długości, liczby i niektórych() - +/znaków w dowolnej kolejności może być ok, jak w: '^ [0-9() +/-] {5,} $' – arnep

1

kod do z wyjątkiem tylko numery nawiasy i myślniki

function DoValidatePhone() { 
    var frm = document.forms['editMemberForm'];     
    var stripped = frm.contact.value; 
    var isGoodMatch = stripped.match(/^[0-9\s(-)]*$/); 
    if (!isGoodMatch) { 
     alert("The Emergency Contact number contains invalid characters." + stripped); 
     return false; 
    } 
} 
10

jest bardzo pomocne dla walidacji i formatowania numerów telefonów na całym świecie Google libphonenumber. Jest łatwiejszy, mniej tajemniczy i bardziej solidny niż przy użyciu RegEx, i jest dostępny w językach JavaScript, Ruby, Python, C#, PHP i Objective-C.

+1

* To *. Ludzie po prostu nie rozumieją, że [wyrażenia regularne to naiwne rozwiązania] (http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links/21925491#21925491) do sprawdzania prawdziwych danych. –

-1
function validate(phoneString){ 

    reg = /^([+|\d])+([\s|\d])+([\d])$/; 

    return reg.test(phoneString); 

} 
Powiązane problemy