Xác thực số điện thoại bằng JavaScript


143

Tôi tìm thấy mã này trong một số trang web, và nó hoạt động hoàn hảo. Nó xác nhận rằng số điện thoại ở một trong các định dạng sau:
(123) 456-7890 hoặc 123-456-7890

Vấn đề là khách hàng của tôi (tôi không biết tại sao, có thể nội dung của khách hàng) muốn thêm một định dạng khác, mười số liên tiếp, đại loại như thế này: 1234567890 .

Tôi đang sử dụng biểu thức chính quy này,

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

Làm thế nào tôi có thể thêm rằng nó cũng xác nhận định dạng khác? Tôi không tốt với các biểu thức thông thường.


3
bản sao có thể có của biểu thức chính quy toàn diện để xác thực số điện thoại
Alex Wayne

5
Như một quy tắc tự nhiên - cố gắng xác nhận số điện thoại sẽ phải chịu thất bại. Điều gì với các cấu trúc khác nhau ở các quốc gia và phần mở rộng khác nhau, đó là một vấn đề rất khó khăn.
Quentin

1
Và những gì về ví dụ ký hiệu tiếng Pháp? "12 34 56 78 90" Chỉ cần xóa mọi thứ trừ các số (ngoại trừ có thể là dấu cộng ở đầu) và kiểm tra độ dài.
thejh

Thực tế, bạn không nên sử dụng các biểu thức thông thường để xác thực số điện thoại đúng cách .
Dan Dascalescu

Câu trả lời:


122

Trước hết, trình xác nhận định dạng của bạn rõ ràng chỉ thích hợp cho các số NANP (mã quốc gia +1). Ứng dụng của bạn sẽ được sử dụng bởi một người có số điện thoại từ bên ngoài Bắc Mỹ? Nếu vậy, bạn không muốn ngăn những người đó nhập số [quốc tế] hoàn toàn hợp lệ.

Thứ hai, xác nhận của bạn là không chính xác. Số NANP mang hình thức NXX NXX XXXXNlà một chữ số 2-9 và Xlà một chữ số 0-9. Ngoài ra, mã vùng và trao đổi có thể không có dạng N11(kết thúc bằng hai mã) để tránh nhầm lẫn với các dịch vụ đặc biệt ngoại trừ các số trong mã vùng phi địa lý (800, 888, 877, 866, 855, 900) có thể có N11trao đổi.

Vì vậy, regex của bạn sẽ vượt qua số (123) 123 4566 mặc dù đó không phải là số điện thoại hợp lệ. Bạn có thể khắc phục điều đó bằng cách thay thế \d{3}bằng [2-9]{1}\d{2}.

Cuối cùng, tôi có cảm giác bạn đang xác thực đầu vào của người dùng trong trình duyệt web. Hãy nhớ rằng xác thực phía máy khách chỉ là sự tiện lợi mà bạn cung cấp cho người dùng ; bạn vẫn cần xác thực tất cả đầu vào (một lần nữa) trên máy chủ.

TL; DR không sử dụng biểu thức chính quy để xác thực dữ liệu trong thế giới thực phức tạp như số điện thoại hoặc URL . Sử dụng một thư viện chuyên ngành .


Tôi đồng ý rằng regex không đủ để xác thực số điện thoại vì gói số điện thoại thực sự hoạt động dựa trên phạm vi, ví dụ: 12300000 đến 12399999 ( numberingplans.com/ .)

146

Chế độ lựa chọn của tôi là:

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

Các định dạng hợp lệ:

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


3
Là / im? Không thể tìm thấy lời giải thích trên google :)
Sarin Suriyakoon

7
@SarinSuriyakoon ilàm cho biểu thức không nhạy cảm và mthực hiện tìm kiếm nhiều dòng
Rodrigo Leite

44
Tại sao bạn cần phân biệt chữ hoa chữ thường?
Solomon Closson

1
Regex này là tuyệt vời bởi vì nếu bạn loại bỏ ^ở đầu và $cuối, nó cũng có thể tìm thấy các số điện thoại ở giữa các chuỗi
hobberwickey

2
@darioxlz '123456789' không phải là độ dài hợp lệ cho một số điện thoại
Punjabi4life

67

Nếu bạn đang tìm kiếm 10 và chỉ 10 chữ số, hãy bỏ qua mọi thứ trừ các chữ số-

   return value.match(/\d/g).length===10;

Đây là những gì tôi sẽ đề nghị. Dễ dàng thoải mái. Và quá nhiều xác nhận có thể là một điều xấu dù sao.
mwilcox

1
Đây là cách tốt nhất để đi. Trừ khi bạn thực sự quan tâm nó ở định dạng nào, tất cả điều này là đảm bảo số đó hợp lệ một phần, và không phải là một mớ hỗn độn.
mdance

7
Bạn có nghĩa là khớp (/ \ d / g) không khớp (/ \ d /) hoặc độ dài sẽ là 1, không phải 10; Ngoài ra, trận đấu trên một chuỗi trống là null. Ít nhất nó phải là var m = value.match (/ \ d / g); trả lại m && m.length === 10
Doug

Hoặc return (value.match(/\d/g) || []).length == 10hoặc đơn giản hơn nhiều (nhưng không hoàn hảo) : return value.replace(/\D/g,'').length == 10.
RobG

Tôi thích cái này : /\D/gi.test(value). Mọi thứ không phải là một chữ số, bao gồm cả khoảng trắng, dấu gạch ngang, v.v ...
Gus

33

Những gì tôi sẽ làm là bỏ qua định dạng và xác nhận nội dung số:

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);
}

Đồng ý về việc bỏ qua định dạng.
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

Đây là một tùy chọn rất lỏng lẻo và tôi thích giữ nó theo cách này, chủ yếu tôi sử dụng nó trong các biểu mẫu đăng ký mà người dùng cần thêm số điện thoại của họ. Thông thường người dùng gặp rắc rối với các biểu mẫu thực thi các quy tắc định dạng nghiêm ngặt, tôi thích người dùng điền vào số và định dạng trong màn hình hoặc trước khi lưu nó vào cơ sở dữ liệu. http://regexr.com/3c53v


3
regex sửa đổi một chút để cho phép, ví dụ như +41 (79) 123 45 67(Thụy Sĩ):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
Remigius Stalder

Cái này có vẻ phù hợp với tôi vì nó không quá chuỗi và dường như bao gồm tất cả các định dạng quốc tế (và cảm ơn @RemigiusStalder cho bản sửa lỗi của Thụy Sĩ)
Gavin

Nếu bạn có phần phụ trợ java, bạn có thể thêm chuẩn hóa số điện thoại, ví dụ: từ github.com/google/libphonenumber
Remigius Stalder

29

REGEX sau đây sẽ xác nhận bất kỳ định dạng nào sau đây:

(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}$/

3
Bạn cần phải thoát .hoặc nếu không nó sẽ phù hợp với một nhân vật tùy ý, phá vỡ regex của bạn.
Christoph

1
Điều này dẫn tôi đi đúng hướng. Cảm ơn! Thật không may, biểu thức này cũng sẽ khớp (1234567890 và 123) 4567890. ^ ((([0-9] {3})) | ([0-9] {3})) [- \ s \.]? [0-9] {3} [- \ s \.]? [0-9] {4} $ quan tâm đến vấn đề nhỏ đó.
Joe Hawkins

15

Tôi sẽ đề nghị sử dụng một cái gì đó rõ ràng hơn (đặc biệt là suy nghĩ xem ai sẽ phải duy trì mã) ... còn về:

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

nơi regrec được xây dựng từ một mẫu rõ ràng? Thêm một cái mới sau đó sẽ là không có trí tuệ và thậm chí chính khách hàng có thể làm điều đó trong một trang "tùy chọn".


15

Trường hợp str có thể là bất kỳ trong số các mẫu này: 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");



9

Hãy thử cái này - nó cũng bao gồm xác nhận cho các định dạng quốc tế.

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

Regex này xác nhận định dạng sau:

  • (541) 754-3010 trong nước
  • + 1-541-754-3010 Quốc tế
  • 1-541-754-3010 được quay ở Mỹ
  • 001-541-754-3010 Quay số từ Đức
  • 191 541 754 3010 Quay số từ Pháp

6

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

Mặc dù bài này đã cũ nhưng muốn để lại sự đóng góp của tôi. những thứ này được chấp nhận: 5555555555 555-555-5555 (555)555-5555 1 (555) 555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

những điều này không được chấp nhận:

555-5555 -> để chấp nhận sử dụng này: ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

5555555 -> để chấp nhận sử dụng này: ^\+?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 2 757 -7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622-7382 (555) 5 (55?) - 5555

đây là mã tôi đã sử dụng:

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");

vấn đề duy nhất của regex này là nó coi chuỗi điện thoại hợp lệ chỉ có một ')' hoặc chỉ một '(' (như "(555-555-5555")
happyZZR1400

5

Điều này sẽ làm việc:

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

?tự này biểu thị rằng nhóm trước phải được khớp 0 hoặc 1 lần. Nhóm (-|\s)sẽ phù hợp với một -hoặc một |nhân vật. Thêm ?sau lần xuất hiện thứ hai của nhóm này trong biểu thức chính quy của bạn cho phép bạn khớp một chuỗi gồm 10 chữ số liên tiếp.



2

Câu trả lời của mọi người đều rất hay, nhưng đây là câu tôi nghĩ toàn diện hơn một chút ...

Điều này được viết cho việc sử dụng kết hợp javascript của một số trong một dòng duy nhất:

^(?!.*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})$

Nếu bạn muốn khớp ở ranh giới từ, chỉ cần thay đổi ^ và $ thành \ b

Tôi hoan nghênh mọi đề xuất, chỉnh sửa hoặc phê bình về giải pháp này. Theo như tôi có thể nói, điều này phù hợp với định dạng NANP (đối với số ở Hoa Kỳ - tôi đã không xác thực các quốc gia Bắc Mỹ khác khi tạo điều này), tránh mọi lỗi 911 (không thể ở mã vùng hoặc mã vùng), loại bỏ chỉ những số 555 thực sự không hợp lệ (mã vùng của 555 theo sau là 01xx trong đó x = bất kỳ số nào).


1

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

?tự này biểu thị rằng nhóm trước phải được khớp 0 hoặc 1 lần. Nhóm (-|\s)sẽ phù hợp với một -hoặc một |nhân vật.


1

Tôi phải đồng ý rằng xác nhận số điện thoại là một nhiệm vụ khó khăn. Đối với vấn đề cụ thể này, tôi sẽ thay đổi regex từ

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

đến

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

vì chỉ một yếu tố nữa trở nên không cần thiết là dấu gạch ngang / dấu cách cuối cùng.


Tôi thực sự đang cố gắng nâng cấp trò chơi Regex của mình! Tôi đang kiểm tra đề xuất của bạn bằng cách sử dụng "Huấn luyện viên Regex." Tôi đang sử dụng regex (()? \ D {3} ())? (- | \ s)? \ D {3} (- | \ s)? \ D {4} và chuỗi mục tiêu (123) 456-7890 nhưng vì một số lý do, nó chỉ lấy được 7 chữ số cuối cùng. Có ý kiến ​​gì không?
Aaron Hathaway

Yep regex hơi thô bạo trên bộ não ... và sự kiên nhẫn. Ok thử / ^ [(]? (\ D {3}) [)]? [- | \ s]? (\ D {3}) [- | \ s]? (\ D {4}) $ / the phần đầu tiên của biểu thức chính cũ không hoạt động tốt: "(()? \ d {3} ())" (() dấu ngoặc giữa thực sự được xem là một phần của cú pháp biểu thức chính và không phải là ký tự được tìm kiếm.
Luc Veronneau

1

Nếu bạn sử dụng trên thẻ đầu vào hơn mã này sẽ giúp bạn. Tôi tự viết mã này và tôi nghĩ rằng đây là cách rất tốt để sử dụng trong đầu vào. nhưng bạn có thể thay đổi nó bằng định dạng của bạn. Nó sẽ giúp người dùng sửa định dạng của họ trên thẻ đầu vào.

$("#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;
}

1

Chỉ muốn thêm một giải pháp cụ thể để chọn số điện thoại không phải địa phương (loại 800 và 900).

(\+?1[-.(\s]?|\()?(900|8(0|4|5|6|7|8)\3+)[)\s]?[-.\s]?\d{3}[-.\s]?\d{4}

1

Reg ex này phù hợp với số điện thoại quốc tế và nhiều định dạng của số di động.

Đây là biểu thức chính quy: / ^ (+ {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} $ /

Đây là chức năng 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;
    }
}

Điều này xác nhận các định dạng sau:

+44 07988-825 465 (với bất kỳ sự kết hợp nào của dấu gạch ngang thay cho không gian ngoại trừ việc chỉ có một khoảng trắng phải tuân theo +44)

+44 (0) 7988-825 465 (với bất kỳ tổ hợp dấu gạch nối nào thay cho khoảng trắng ngoại trừ không có dấu gạch nối nào có thể tồn tại trực tiếp trước hoặc sau (0) và khoảng trắng trước hoặc sau (0) không cần tồn tại)

123 456-789 0123 (với bất kỳ sự kết hợp nào của dấu gạch ngang thay cho khoảng trắng)

123-123 123 (với bất kỳ sự kết hợp của dấu gạch ngang thay cho khoảng trắng)

123 123456 (Không gian có thể được thay thế bằng dấu gạch nối)

1234567890

Không có dấu cách kép hoặc dấu gạch nối kép có thể tồn tại cho tất cả các định dạng.


1

Xác thực số điện thoại + trả lại dữ liệu được định dạng

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'));


1

thử cái này

/ ^ (\ + {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

định dạng hợp lệ

  • (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


{1}là vô dụng, {0,}được viết tốt hơn *. Tại sao sử dụng tất cả các nhóm chụp? Họ làm chậm quá trình.
Toto

điều này không tốt. bởi vì bạn có thể nhập nhiều số như bạn muốn.
mohammad jawad Barati

1

Chức năng này hoạt động tốt cho chúng tôi:

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'));


0

Biểu thức chính quy đơn giản: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g

Kiểm tra định dạng, hy vọng nó hoạt động:
444-555-1234
f: 246.555.8888
m: 1235554567


Vui lòng định dạng câu trả lời của bạn (sử dụng bốn khoảng trắng làm thụt lề cho một khối mã). Một lời giải thích cho mã của bạn cũng sẽ tăng chất lượng của nó.
Nander Speerstra

0
\\(?\d{3}\\)?([\-\s\.])?\d{3}\1?\d{4}

Điều này sẽ xác nhận bất kỳ số điện thoại có định dạng biến:

\\(?\d{3}\\)? tìm thấy 3 chữ số kèm theo dấu ngoặc đơn hay không.

([\-\s\.])? tìm thấy bất kỳ ký tự phân cách nào hay không

\d{3} tìm thấy 3 chữ số

\1sử dụng dấu phân cách khớp đầu tiên - điều này đảm bảo rằng các dấu phân cách giống nhau. Vì vậy (000) 999-5555 sẽ không xác thực ở đây vì có dấu tách dấu cách và dấu cách, vì vậy chỉ cần xóa "\ 1" và thay thế bằng mẫu phụ phân cách (làm như vậy cũng sẽ xác thực các định dạng không chuẩn). Tuy nhiên, bạn nên được gợi ý định dạng cho đầu vào của người dùng.

\d{4} tìm thấy 4 chữ số

Xác thực:

  • (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 này là dành cho JavaScript để tăng gấp đôi thoát.


0

Hãy thử chức năng js này. Trả về true nếu nó phù hợp và false nếu nó không thành công Ref

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


0

Chỉ cần bỏ qua mọi thứ trừ chữ số.

Đây là những gì tôi sử dụng:

// 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
}

-1

thử cái này

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

định dạng hợp lệ:

  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

Hãy chắc chắn để bao gồm giải thích với câu trả lời của bạn. Mặc dù nó có thể hoạt động, điều quan trọng là phải giải thích làm thế nào và tại sao để có thông tin đầy đủ và có liên quan. Cảm ơn bạn đã trả lời :)
Magix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.