Potwierdź numer telefonu za pomocą JavaScript

143

Znalazłem ten kod na jakiejś stronie i działa idealnie. Sprawdza, czy numer telefonu ma jeden z następujących formatów:
(123) 456-7890 lub 123-456-7890

Problem polega na tym, że mój klient (nie wiem dlaczego, może rzeczy klienta) chce dodać inny format, dziesięć liczb kolejno, coś takiego: 1234567890 .

Używam tego wyrażenia regularnego,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

Jak mogę dodać, że sprawdza również inny format? Nie radzę sobie z wyrażeniami regularnymi.

Castro Roy
źródło
5
Z reguły - próby weryfikacji numerów telefonów są skazane na niepowodzenie. Przy różnych strukturach w różnych krajach i rozszerzeniach jest to bardzo trudny problem.
Quentin
1
A co np. Z notacją francuską? „12 34 56 78 90” Po prostu usuń wszystko oprócz cyfr (może oprócz znaku plus na początku) i sprawdź długość.
thejh
W rzeczywistości nie powinieneś używać wyrażeń regularnych do prawidłowego sprawdzania poprawności numerów telefonów .
Dan Dascalescu

Odpowiedzi:

122

Po pierwsze, twój walidator formatu jest oczywiście odpowiedni tylko dla numerów NANP (kod kraju +1). Czy Twoja aplikacja będzie używana przez kogoś, kto ma numer telefonu spoza Ameryki Północnej? Jeśli tak, nie chcesz uniemożliwić tym osobom wprowadzenia całkowicie prawidłowego [międzynarodowego] numeru.

Po drugie, Twoja walidacja jest nieprawidłowa. Numery NANP mają postać, NXX NXX XXXXgdzie Njest cyfrą 2-9 i Xcyfrą 0-9. Ponadto numery kierunkowe i giełdy nie mogą mieć formy N11(kończyć się dwoma), aby uniknąć pomyłki z usługami specjalnymi, z wyjątkiem numerów w niegeograficznym numerze kierunkowym (800, 888, 877, 866, 855, 900) mogą mieć N11wymianę.

Tak więc Twoje wyrażenie regularne przekaże numer (123) 123 4566, mimo że nie jest to prawidłowy numer telefonu. Można to naprawić poprzez wymianę \d{3}z [2-9]{1}\d{2}.

Wreszcie mam wrażenie, że sprawdzasz poprawność danych wejściowych użytkownika w przeglądarce internetowej. Pamiętaj, że walidacja po stronie klienta to tylko wygoda, którą zapewniasz użytkownikowi ; nadal musisz zweryfikować wszystkie dane wejściowe (ponownie) na serwerze.

TL; DR nie używają wyrażeń regularnych do weryfikacji złożonych rzeczywistych danych, takich jak numery telefonów lub adresy URL . Skorzystaj ze specjalistycznej biblioteki .

josh3736
źródło
Zgadzam się, że wyrażenie regularne nie jest wystarczające do walidacji numerów telefonów, ponieważ plan numeracji telefonów faktycznie działa w oparciu o zakres, np. 12300000 do 12399999 ( numberingplans.com/ ... )
146

Mój wybrany regex to:

/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

Prawidłowe formaty:

(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725

EeeeeK
źródło
3
Co to jest / im? Nie mogę znaleźć wyjaśnienia w google :)
Sarin Suriyakoon
7
@SarinSuriyakoon isprawia, że ​​w wyrażeniu nie jest rozróżniana wielkość liter i mprzeprowadza wyszukiwania wielowierszowe
Rodrigo Leite
44
dlaczego potrzebujesz rozróżniać wielkość liter w liczbach?
Solomon Closson
1
To wyrażenie regularne jest świetne, ponieważ po usunięciu ^początku i $końca można znaleźć numery telefonów również w środku ciągów
hobberwickey
2
@darioxlz '123456789' nie jest prawidłową długością numeru telefonu
punjabi4life
67

Jeśli szukasz 10 i tylko 10 cyfr, zignoruj ​​wszystko oprócz cyfr

   return value.match(/\d/g).length===10;
kennebec
źródło
To właśnie zamierzałem zasugerować. Bułka z masłem. I tak zbyt wiele weryfikacji może być złą rzeczą.
mwilcox
1
To najlepszy sposób. O ile NAPRAWDĘ nie obchodzi cię, w jakim jest formacie, wszystko to sprawia, że ​​numer jest częściowo poprawny, a nie kilka żartów.
mdance
7
Masz na myśli dopasowanie (/ \ d / g) niezgodne (/ \ d /) lub długość będzie wynosić 1, a nie 10; również dopasowanie w pustym łańcuchu jest zerowe. Przynajmniej powinno to być var ​​m = value.match (/ \ d / g); return m && m.length === 10
Doug
Albo return (value.match(/\d/g) || []).length == 10albo znacznie prostsze (ale równie błędna) return value.replace(/\D/g,'').length == 10.
RobG
I jak ten: /\D/gi.test(value). Wszystko, co nie jest cyfrą, w tym spacje, myślniki itp ...
Gus,
33

Zignorowałbym format i zweryfikował zawartość liczbową:

var originalPhoneNumber = "415-555-1212";

function isValid(p) {
  var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/;
  var digits = p.replace(/\D/g, "");
  return phoneRe.test(digits);
}
Paul Schreiber
źródło
Zgadzam się co do ignorowania formatowania, .eg bardzo często zdarza się, że numery telefonów komórkowych są przedstawiane ze spacjami, takimi jak XXXX XXX XXX, ale formularze wymagają wprowadzenia bez spacji, tj. Jako XXXXXXXXXX.
RobG
30
/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g

(123) 456-7890
+ (123) 456-7890
+ (123) -456-7890
+ (123) - 456-7890
+ (123) - 456-78-90
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725

Jest to bardzo luźna opcja i wolę ją taką zachować, najczęściej używam jej w formularzach rejestracyjnych, gdzie użytkownicy muszą podać swój numer telefonu. Zwykle użytkownicy mają problemy z formularzami, które wymuszają ścisłe reguły formatowania, wolę, aby użytkownik wpisał numer i sformatował go na wyświetlaczu lub przed zapisaniem go w bazie danych. http://regexr.com/3c53v

elisze
źródło
3
regex nieznacznie zmodyfikowano, aby umożliwić np. +41 (79) 123 45 67(Szwajcaria):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
Remigius Stalder
Ten wydaje się być dla mnie dobry, ponieważ nie jest zbyt ciągły i wydaje się, że obejmuje wszystkie międzynarodowe formaty (i dzięki @RemigiusStalder za poprawkę w Szwajcarii)
Gavin
Jeśli masz zaplecze java, możesz dodać normalizację numeru telefonu, np. Z github.com/google/libphonenumber
Remigius Stalder
29

Poniższy REGEX zweryfikuje każdy z tych formatów:

(123) 456-7890
123-456-7890
123.456.7890
1234567890

/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/
Billbad
źródło
3
Musisz uciec od, .bo inaczej dopasuje on dowolny znak, łamiąc twoje wyrażenie regularne.
Christoph
1
To poprowadziło mnie we właściwym kierunku. Dzięki! Niestety to wyrażenie będzie również pasowało do (1234567890 i 123) 4567890. ^ ((([0-9] {3})) | ([0-9] {3})) [- \ s \.]? [0-9] {3} [- \ s \.]? [0-9] {4} $ rozwiązuje ten mały problem.
Joe Hawkins
15

Sugerowałbym użycie czegoś jaśniejszego (zwłaszcza myśląc o tym, kto będzie musiał utrzymywać kod) ... a co z:

var formats = "(999)999-9999|999-999-9999|9999999999";
var r = RegExp("^(" +
               formats
                 .replace(/([\(\)])/g, "\\$1")
                 .replace(/9/g,"\\d") +
               ")$");

gdzie wyrażenie regularne jest zbudowane z przejrzystego szablonu? Dodanie nowego byłoby wtedy oczywiste, a nawet sam klient mógłby to zrobić na stronie „opcje”.

6502
źródło
15

Gdzie str może być dowolnym z tych formarts: 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555

function telephoneCheck(str) {
  var isphone = /^(1\s|1|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/.test(str);
  alert(isphone);
}
telephoneCheck("1 555 555 5555");

Frawel
źródło
niezłe
wyrażenie regularne
9

Wypróbuj ten - obejmuje również walidację dla formatów międzynarodowych.

/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g

To wyrażenie regularne weryfikuje następujący format:

  • (541) 754-3010 Krajowy
  • + 1-541-754-3010 międzynarodowy
  • 1-541-754-3010 Wybierany w USA
  • 001-541-754-3010 Wybierany z Niemiec
  • 191 541 754 3010 Wywoływane z Francji
harinimurugan
źródło
6

/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/

Chociaż ten post jest stary, ale chcę opuścić mój wkład. są akceptowane: 5555555555 555-555-5555 (555)555-5555 1 (555) 555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

te nie są akceptowane:

555-5555 -> aby zaakceptować to użycie: ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

5555555 -> aby zaakceptować to użycie: ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

1 555) 555-5555 123 ** & !! asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2757 622-7382 10 (757) 622 -7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622-7382 (555) 5 (55?) - 5555

to jest kod, którego użyłem:

function telephoneCheck(str) {
  var patt = new RegExp(/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/);
  return patt.test(str);
}

telephoneCheck("+1 555-555-5555");
Flavio Ferreira
źródło
jedyny problem tego wyrażenia regularnego polega na tym, że uznaje on prawidłowy ciąg numeru telefonu zawierający tylko jeden znak „)” lub tylko jeden „('(np.„ (555-555-5555 ”)
happyZZR1400
5

To zadziała:

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

Te ?oznacza, że grupa znaków poprzedzających powinny być dopasowane zero lub jeden razy. Grupa (-|\s)dopasuje znak -lub |znak. Dodanie ?po drugim wystąpieniu tej grupy w Twoim wyrażeniu regularnym umożliwia dopasowanie sekwencji 10 kolejnych cyfr.

Pączek
źródło
3

naprawdę proste

"9001234567".match(/^\d{10}$/g)
Nikita Shahov
źródło
2

Odpowiedzi wszystkich są świetne, ale oto jedna, która moim zdaniem jest nieco bardziej wszechstronna ...

Jest to napisane w celu dopasowania javascript do użycia pojedynczej liczby w jednym wierszu:

^(?!.*911.*\d{4})((\+?1[\/ ]?)?(?![\(\. -]?555.*)\( ?[2-9][0-9]{2} ?\) ?|(\+?1[\.\/ -])?[2-9][0-9]{2}[\.\/ -]?)(?!555.?01..)([2-9][0-9]{2})[\.\/ -]?([0-9]{4})$

Jeśli chcesz dopasować w granicach słowa, po prostu zmień ^ i $ na \ b

Z zadowoleniem przyjmuję wszelkie sugestie, poprawki lub krytykę tego rozwiązania. O ile wiem, jest to zgodne z formatem NANP (dla numerów w USA - nie sprawdzałem poprawności innych krajów Ameryki Północnej podczas tworzenia tego), pozwala uniknąć błędów 911 (nie może być w numerze kierunkowym lub kodzie regionu), eliminuje tylko te numery 555, które są rzeczywiście nieprawidłowe (kod regionu 555, po którym następuje 01xx, gdzie x = dowolna liczba).

Erasmus
źródło
1

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

Te ?oznacza, że grupa znaków poprzedzających powinny być dopasowane zero lub jeden razy. Grupa (-|\s)dopasuje znak -lub |znak.

parijat
źródło
1

Muszę się zgodzić, że weryfikacja numerów telefonów to trudne zadanie. Jeśli chodzi o ten konkretny problem, zmieniłbym wyrażenie regularne z

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)\d{4}$/

do

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

jako jedyny dodatkowy element, który staje się niepotrzebny, to ostatnia myślnik / spacja.

Luc Veronneau
źródło
Naprawdę próbuję poprawić moją grę Regex! Sprawdzam twoją sugestię za pomocą „Trenera Regex”. Używam wyrażenia regularnego (()? \ D {3} ())? (- | \ s)? \ D {3} (- | \ s)? \ D {4} i ciągu docelowego (123) 456-7890, ale z jakiegoś powodu przechwytuje tylko ostatnie 7 cyfr. Jakieś pomysły?
Aaron Hathaway
Tak, regex są trochę szorstkie dla mózgu ... i cierpliwości. Ok, spróbuj / ^ [(]? (\ D {3}) [)]? [- | \ s]? (\ D {3}) [- | \ s]? (\ D {4}) $ / the pierwsza część starszego wyrażenia regularnego nie działała dobrze: „(()? \ d {3} ())” (() środkowy nawias był faktycznie postrzegany jako część składni wyrażenia regularnego, a nie jako znaki do wyszukania.
Luc Veronneau
1

Jeśli używasz tagu wejściowego, ten kod ci pomoże. Piszę ten kod samodzielnie i myślę, że jest to bardzo dobry sposób na wykorzystanie danych wejściowych. ale możesz to zmienić za pomocą swojego formatu. Pomoże to użytkownikowi poprawić ich format na znaczniku wejściowym.

$("#phone").on('input', function() {  //this is use for every time input change.
        var inputValue = getInputValue(); //get value from input and make it usefull number
        var length = inputValue.length; //get lenth of input

        if (inputValue < 1000)
        {
            inputValue = '1('+inputValue;
        }else if (inputValue < 1000000) 
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, length);
        }else if (inputValue < 10000000000) 
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, 6) + '-' + inputValue.substring(6, length);
        }else
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, 6) + '-' + inputValue.substring(6, 10);
        }       
        $("#phone").val(inputValue); //correct value entered to your input.
        inputValue = getInputValue();//get value again, becuase it changed, this one using for changing color of input border
       if ((inputValue > 2000000000) && (inputValue < 9999999999))
      {
          $("#phone").css("border","black solid 1px");//if it is valid phone number than border will be black.
      }else
      {
          $("#phone").css("border","red solid 1px");//if it is invalid phone number than border will be red.
      }
  });

    function getInputValue() {
         var inputValue = $("#phone").val().replace(/\D/g,'');  //remove all non numeric character
        if (inputValue.charAt(0) == 1) // if first character is 1 than remove it.
        {
            var inputValue = inputValue.substring(1, inputValue.length);
        }
        return inputValue;
}

źródło
1

Chciałem tylko dodać rozwiązanie przeznaczone specjalnie do wybierania nielokalnych numerów telefonów (typy 800 i 900).

(\+?1[-.(\s]?|\()?(900|8(0|4|5|6|7|8)\3+)[)\s]?[-.\s]?\d{3}[-.\s]?\d{4}
Mike T.
źródło
1

Ten rejestr jest odpowiedni dla międzynarodowych numerów telefonów i wielu formatów numerów komórkowych.

Oto wyrażenie regularne: / ^ (+ {1} \ d {2,3} \ s? [(] {1} \ d {1,3} [)] {1} \ s? \ D + | + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} $ /

Oto funkcja JavaScript

function isValidPhone(phoneNumber) {
    var found = phoneNumber.search(/^(\+{1}\d{2,3}\s?[(]{1}\d{1,3}[)]{1}\s?\d+|\+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}$/);
    if(found > -1) {
        return true;
    }
    else {
        return false;
    }
}

Sprawdza to następujące formaty:

+44 07988-825 465 (z dowolną kombinacją myślników zamiast spacji, z wyjątkiem tego, że tylko spacja musi występować po +44)

+44 (0) 7988-825 465 (z dowolną kombinacją myślników zamiast spacji, z wyjątkiem tego, że żaden łącznik nie może istnieć bezpośrednio przed lub po (0), a spacja przed lub po (0) nie musi istnieć)

123 456-789 0123 (z dowolną kombinacją myślników zamiast spacji)

123-123 123 (z dowolną kombinacją myślników zamiast spacji)

123 123456 (spację można zastąpić łącznikiem)

1234567890

Dla wszystkich formatów nie mogą istnieć podwójne spacje ani łączniki.

user2288580
źródło
1

Sprawdź poprawność numeru telefonu + zwróć sformatowane dane

function validTel(str){
  str = str.replace(/[^0-9]/g, '');
  var l = str.length;
  if(l<10) return ['error', 'Tel number length < 10'];
  
  var tel = '', num = str.substr(-7),
      code = str.substr(-10, 3),
      coCode = '';
  if(l>10) {
    coCode = '+' + str.substr(0, (l-10) );
  }
  tel = coCode +' ('+ code +') '+ num;
  
  return ['succes', tel];
}

console.log(validTel('+1 [223] 123.45.67'));

VVV
źródło
1

Spróbuj tego

/ ^ (\ + {0,}) (\ d {0,}) ([(] {1} \ d {1,3} [)] {0,}) {0,} (\ s? \ D + | \ + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} ( \ s) {0,} $ / gm

prawidłowe formaty

  • (123) 456-7890
  • (123)456-7890
  • 123-456-7890
  • 1234567890
  • +31636363634
  • +3 (123) 123-12-12
  • +3 (123) 123-12-12
  • +3 (123) 1231212
  • +3 (123) 12312123
  • +3 (123) 123 12 12
  • 075-63546725
  • +7910 120 54 54
  • 910 120 54 54
  • 8 999 999 99 99

https://regex101.com/r/QXAhGV/1

Иван Гончаренко
źródło
{1}jest bezużyteczna, {0,}jest lepiej napisana *. Po co używać tych wszystkich grup przechwytywania? Spowalniają proces.
Toto
to nie jest dobre. ponieważ możesz wprowadzić dowolną liczbę liczb.
mohammad jawad Barati
1

Ta funkcja działała dla nas dobrze:

let isPhoneNumber = input => {

  try {
    let ISD_CODES = [93, 355, 213, 1684, 376, 244, 1264, 672, 1268, 54, 374, 297, 61, 43, 994, 1242, 973, 880, 1246, 375, 32, 501, 229, 1441, 975, 591, 387, 267, 55, 246, 1284, 673, 359, 226, 257, 855, 237, 1, 238, 1345, 236, 235, 56, 86, 61, 61, 57, 269, 682, 506, 385, 53, 599, 357, 420, 243, 45, 253, 1767, 1809, 1829, 1849, 670, 593, 20, 503, 240, 291, 372, 251, 500, 298, 679, 358, 33, 689, 241, 220, 995, 49, 233, 350, 30, 299, 1473, 1671, 502, 441481, 224, 245, 592, 509, 504, 852, 36, 354, 91, 62, 98, 964, 353, 441624, 972, 39, 225, 1876, 81, 441534, 962, 7, 254, 686, 383, 965, 996, 856, 371, 961, 266, 231, 218, 423, 370, 352, 853, 389, 261, 265, 60, 960, 223, 356, 692, 222, 230, 262, 52, 691, 373, 377, 976, 382, 1664, 212, 258, 95, 264, 674, 977, 31, 599, 687, 64, 505, 227, 234, 683, 850, 1670, 47, 968, 92, 680, 970, 507, 675, 595, 51, 63, 64, 48, 351, 1787, 1939, 974, 242, 262, 40, 7, 250, 590, 290, 1869, 1758, 590, 508, 1784, 685, 378, 239, 966, 221, 381, 248, 232, 65, 1721, 421, 386, 677, 252, 27, 82, 211, 34, 94, 249, 597, 47, 268, 46, 41, 963, 886, 992, 255, 66, 228, 690, 676, 1868, 216, 90, 993, 1649, 688, 1340, 256, 380, 971, 44, 1, 598, 998, 678, 379, 58, 84, 681, 212, 967, 260, 263],
      //extract numbers from string
      thenum = input.match(/[0-9]+/g).join(""),
      totalnums = thenum.length,
      last10Digits = parseInt(thenum) % 10000000000,
      ISDcode = thenum.substring(0, totalnums - 10);

    //phone numbers are generally of 8 to 16 digits
    if (totalnums >= 8 && totalnums <= 16) {
      if (ISDcode) {
        if (ISD_CODES.includes(parseInt(ISDcode))) {
          return true;
        } else {
          return false;
        }
      } else {
        return true;
      }
    }
  } catch (e) {}

  return false;
}

console.log(isPhoneNumber('91-9883208806'));

Zameer
źródło
0

Proste wyrażenie regularne: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g

Sprawdź format, mam nadzieję, że
zadziała : 444-555-1234
f: 246.555.8888
m: 1235554567

sahed moral
źródło
Sformatuj swoją odpowiedź (użyj czterech spacji jako wcięć w bloku kodu). Wyjaśnienie kodu również podniesie jego jakość.
Nander Speerstra
0
\\(?\d{3}\\)?([\-\s\.])?\d{3}\1?\d{4}

Spowoduje to sprawdzenie dowolnego numeru telefonu o zmiennym formacie:

\\(?\d{3}\\)? znajduje 3 cyfry w nawiasach lub nie.

([\-\s\.])? znajduje dowolny z tych znaków separatora lub nie

\d{3} znajduje 3 cyfry

\1używa pierwszego dopasowanego separatora - zapewnia to, że separatory są takie same. Tak więc (000) 999-5555 nie będzie sprawdzać poprawności w tym miejscu, ponieważ istnieje separator spacji i myślnika, więc po prostu usuń „\ 1” i zastąp go pod-wzorcem separatora (spowoduje to również sprawdzenie poprawności niestandardowych formatów). Powinieneś jednak i tak podawać wskazówki dotyczące formatu przy wprowadzaniu danych przez użytkownika.

\d{4} znajduje 4 cyfry

Weryfikuje:

  • (000) 999 5555
  • (000) -999-5555
  • (000), 999,5555
  • (000) 999-5555
  • (000) 9995555
  • 000 999 5555
  • 000-999-5555
  • 000,999,5555
  • 0009995555

BTW, to jest dla JavaScript, stąd podwójne znaki ucieczki.

Dacmeaux
źródło
0

Wypróbuj tę funkcję js. Zwraca wartość true, jeśli pasuje, lub false, jeśli się nie powiedzie Ref

function ValidatePhoneNumber(phone) {
        return /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/.test(phone);
}

joxiah025
źródło
0

Po prostu ignoruj ​​wszystko oprócz cyfr.

Oto czego używam:

// USA phones should contain at least 10 digits. For Ukrainian phones it's OK to have only 9 digits, without leading 0 and country code prefix: [+380] 88 888-88-88.
String.prototype.isValidPhone = function(digitsCount) {
  var str = this.trim().match(/\d/g);
  return str && str.length >= (digitsCount || 10); // default is at least 10 digits
}
Aleksey Kuznetsov
źródło
-1

Spróbuj tego

/^[\+]?\d{2,}?[(]?\d{2,}[)]?[-\s\.]?\d{2,}?[-\s\.]?\d{2,}[-\s\.]?\d{0,9}$/im

prawidłowe formaty:

  1. (123) 456-7890
  2. (123)456-7890
  3. 123-456-7890
  4. 123.456.7890
  5. 1234567890
  6. +31636363634
  7. +3 (123) 123-12-12
  8. +3 (123) 123-12-12
  9. +3 (123) 1231212
  10. +3 (123) 12312123
  11. 075-63546725
Maxym
źródło
Prosimy o dołączenie wyjaśnień do odpowiedzi. Chociaż może to zadziałać, ważne jest, aby wyjaśnić, jak i dlaczego, aby mieć pełne i istotne informacje. Dzięki za odpowiedź :)
Magix