sourcecode

JavaScript를 사용한 전화번호 확인

copyscript 2022. 9. 12. 11:45
반응형

JavaScript를 사용한 전화번호 확인

어떤 웹사이트에서 이 코드를 찾았는데 완벽하게 작동해요.전화 번호가 다음 중 하나의 형식인지 확인합니다.
(123) 456-7890 또는 123-456-7890

문제는 클라이언트(클라이언트 내용 등)가 다른 형식을 추가하려고 한다는 것입니다.예를 들어 1234567890과 같은 10개의 숫자를 연속해서 추가하려고 합니다.

이 정규 표현을 쓰고 있는데

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

다른 형식도 검증된다는 것을 어떻게 추가할 수 있을까요?저는 규칙적인 표현을 잘 못해요.

내가 원하는 것은 다음과 같다.

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

유효한 형식:

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

우선 포맷 검증기는 NANP(국가 코드 +1) 번호에만 적합합니다.당신의 어플리케이션은 북미 이외의 지역에서 온 전화번호가 있는 사람이 사용할 수 있습니까?만약 그렇다면, 당신은 그 사람들이 완전히 유효한 국제 번호를 입력하는 것을 막고 싶지 않을 것입니다.

둘째, 당신의 검증은 올바르지 않습니다.의 형식은 NANP입니다.NXX NXX XXXX서 ''는N 및 숫자 2-9 입니다.X ~9.0 ~9 의 입니다.은, 「이러다」의 수 .N11(2개의 1로 끝남) 특수한 서비스와의 혼동을 피하기 위해 비지리적 지역 코드(800, 888, 877, 866, 855, 900)의 번호를 제외하고, 다음과 같은 경우가 있습니다.N11환하하다

따라서 유효한 전화번호가 아니더라도 regex는 (123) 123 4566을 전달합니다.하려면 , 「 「 」를 치환합니다.\d{3}[2-9]{1}\d{2}.

마지막으로 웹 브라우저에서 사용자 입력을 확인하는 느낌이 듭니다.클라이언트측 검증은 사용자에게 제공하는 편리함일 뿐이며, 서버상의 모든 입력(재검증)을 실시할 필요가 있습니다.

TL;DR전화번호URL같은 복잡한 실제 데이터를 검증하는 데 정규 표현을 사용하지 않습니다.전용 라이브러리를 사용합니다.

10자리 숫자만 찾고 있다면 숫자만 제외하고 모두 무시하십시오.

   return value.match(/\d/g).length===10;
/^[+]*[(]{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

이것은 매우 느슨한 옵션이며, 저는 이 방법을 사용하는 것을 선호합니다.주로 사용자가 전화번호를 추가해야 하는 등록 양식에서 사용합니다.일반적으로 사용자는 엄격한 포맷 규칙을 적용하는 폼에 어려움을 겪기 때문에 디스플레이 또는 데이터베이스에 저장하기 전에 번호와 포맷을 입력하는 것이 좋습니다.http://regexr.com/3c53v

형식을 무시하고 숫자 내용을 확인합니다.

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

다음 REGEX는 다음 형식 중 하나를 검증합니다.

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

str은 다음 포마트 중 하나입니다.555-5555 (555) 555-5555 (555) 555 555 555 555 1 555 555 555 555 555

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

보다 명료한 것을 사용하는 것을 추천합니다(특히 누가 코드를 관리해야 하는지 생각해 보십시오).에 대해서:

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

여기서 regexp는 클리어 템플릿에서 구축됩니다.새로운 것을 추가하는 것은 간단한 일이며, 고객 스스로도 「옵션」페이지에서 실시할 수 있습니다.

이것을 사용해 보세요.국제 포맷에 대한 검증도 포함되어 있습니다.

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

이 정규식은 다음 형식을 확인합니다.

  • (54) 754-3010 국내
  • +1-541-754-3010 인터내셔널
  • 1-541-754-3010 미국에서의 다이얼
  • 001-541-754-3010 독일에서 다이얼
  • 191 541 754 3010 프랑스에서 다이얼

이 조작은 유효합니다.

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

?0.character는 0으로, 1로, 0으로, 1로, 1로 일치해야 합니다.(-|\s)는, 일치합니다.- ★★★|★★★★★★의 추가?이두숫자의 할 수 .regex는 10자리 숫자입니다.


정규식

다음 정규식 패턴을 사용합니다.

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

하다, 하다, 하다, 하다.<input pattern="/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im">*


유효한 형식:

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


이거 먹어봐

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

유효한 형식

  • (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?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/

비록 이 게시물은 오래되었지만 나의 기고문을 남기고 싶다.접수처: 555555555555 (555)555-5555 1 (555)555-5555 1 555 555 1 555-5555 1 (555) 555-5555

다음 항목은 허용되지 않습니다.

>: 555-5555 -> " 이이받받받받받받받받받 55 55 55 55 55 55 55 55 55 55" :^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

5555555 -> 이 사용을 받아들이려면:^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

1 555) 555-555 123*&!!asdf # 5555555 (650552368) 2 (757) 622-7382 0 (757) 622-7382 - 1 (757) 622-7382 10 (757) 622-7382 2757682 (752)

사용한 코드는 다음과 같습니다.

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

정말 단순한

"9001234567".match(/^\d{10}$/g)

이 reg ex는 국제 전화번호 및 여러 형식의 휴대 전화 번호에 적합합니다.

정규식은 /^(+{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}$/

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

이것에 의해, 다음의 형식이 검증됩니다.

+44 07988-825 465(스페이스 대신 하이픈 조합 사용, 스페이스만 +44 뒤에 와야 함)

+44 (0) 7988-825 465 (스페이스 대신 하이픈의 임의의 조합을 사용) (0)의 바로 앞 또는 뒤에 하이픈을 사용할 수 없으며 (0)의 앞 또는 뒤에 공백이 존재할 필요가 없음)

123 456-789 0123(스페이스 대신 하이픈을 임의로 조합)

123~123 123(스페이스 대신 하이픈을 임의로 조합)

123456 (스페이스는 하이픈으로 대체 가능)

1234567890

모든 형식에 대해 이중 공백 또는 이중 하이픈을 사용할 수 없습니다.

모든 사람의 답변은 훌륭하지만, 여기 좀 더 포괄적인 답이 있습니다.

이것은 javascript match를 한 줄에 한 개씩 사용할 수 있도록 작성되었습니다.

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

단어 경계에서 일치시키려면 ^과 $를 \b로 변경하십시오.

이 솔루션에 대한 어떠한 제안, 수정 또는 비판도 환영합니다.내가 알기로는, 이것은 NANP 형식과 일치하며(미국 번호의 경우 - 나는 이것을 작성할 때 다른 북미 국가의 유효성을 확인하지 않았다), 911 오류를 방지하고(지역 번호나 지역 번호에 있을 수 없다), 실제로 유효하지 않은 555 번호만 제거합니다(지역 코드 555 뒤에 01xx = 임의의 번호가 나옵니다).

전화번호 확인 + 포맷된 데이터 반환

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

이 기능은 우리에게 잘 작동했습니다.

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

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

?0.character는 0으로, 1로, 0으로, 1로, 1로 일치해야 합니다.(-|\s)는, 일치합니다.- ★★★|★★★★★★ 。

전화번호를 확인하는 것은 어려운 작업이라는 것에 동의해야 합니다.이 특정 문제에 대해서는 regex를 에서 변경합니다.

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

로.

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

불필요해지는 요소는 마지막 대시/스페이스뿐이기 때문입니다.

입력 태그에 이 코드를 사용하면 도움이 됩니다.이 코드는 제가 직접 작성하기 때문에 입력에 사용하는 것이 매우 좋다고 생각합니다만, 포맷으로 변경할 수 있습니다.사용자가 입력 태그의 형식을 수정하는 데 도움이 됩니다.

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

로컬 이외의 전화 번호(800 및 900 타입)를 선택하기 위한 솔루션을 추가하려고 합니다.

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

이 js 함수를 사용해 보세요.일치하는 경우 true를 반환하고 Ref에 실패하면 false를 반환합니다.

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

@marty에서 제공한 것을 더 많은 케이스에 대응하기 위해 조금 수정했습니다.

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

유효한 형식:

  1. +1 123 4567890
  2. +11234567890
  3. +1(123)4567890
  4. +1(123)456-7890
  5. +1 (123) 456-7890
  6. +1 (123)456 7890
  7. +1 123 456-7890
  8. +1 123 456 7890
  9. +1 123-456-7890
  10. 123-456-7890
  11. 123 456-7890
  12. 123 456 7890
  13. 123 4567890
  14. 1234567890

단순 정규 표현식:/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g

포맷을 체크하고, 동작하고 있는 것을 확인합니다.
444-555-1234
f:246.555.8888
m:1235554567

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

이 조작에 의해서, 다음의 가변 형식의 모든 전화 번호가 검증됩니다.

\\(?\d{3}\\)?괄호로 둘러싸인 3자리 숫자를 찾습니다.

([\-\s\.])?다음 구분 문자 중 하나를 찾을지

\d{3}3자리 찾기

\1에서는 첫 번째 일치된 구분 기호를 사용합니다.그러면 구분 기호가 같아집니다.따라서 (000) 999-5555는 공백과 대시 구분자가 있기 때문에 여기서 검증되지 않습니다.따라서 "\1"을 삭제하고 구분자 하위 패턴으로 대체합니다(비표준 형식도 검증됩니다).다만, 유저의 입력에 대해서는 형식 힌트를 얻을 필요가 있습니다.

\d{4}4자리 찾기

검증:

  • (000) 999 5555
  • (000)-999-5555
  • (000).999.5555
  • (000) 999-5555
  • (000)9995555
  • 000 999 5555
  • 000-999-5555
  • 000.999.5555
  • 0009995555

그런데 이것은 자바스크립트용이기 때문에 더블 이스케이프입니다.

이거 먹어봐

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

유효한 형식:

  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

A 아르헨티나 번호에 대한 RegExp: /^(+[0-9]{1,3})?([0-9]{8,13})|([0-9]{3,6})-[0-9]{4,7})$/

유효기간:

X: from 8 to 13 numbers
  • XXXXXXXXXXXXXXXXXXXX
  • separate numbers by a hyphen = X from 3 to 6; Y: from 4 to 7
  • XXX-YYYY
  • Z: from 1 to 3
  • (+Z) XXXXXXXXXXXXXXXXX
  • if you use Z then (+ ) is mandatory.

    숫자만 빼고 다 무시해.

    사용하고 있는 것은 다음과 같습니다.

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

    언급URL : https://stackoverflow.com/questions/4338267/validate-phone-number-with-javascript

    반응형