web-dev-qa-db-ja.com

Javascript正規表現-電話番号を検証するために何を使用しますか?

番号間の空白を含み、これらの文字を許可する国際電話番号を検証するためにRegExがどのように機能するかを誰かに教えてもらえますか:- ( )

文字列内の数字の量はそれほど重要ではありません。必要に応じて、ユーザーが例1または2のようなものを入力できるようにしたいと思います。

例:

  1. +44 (0) 207 111 1111

  2. 442071111111

私はすでにいくつかの同様の質問に対する投稿された回答を読んでテストしましたが、これまでのところ、私が望むように機能しているものはありません。

誰かが検証のために上記をどのように書くべきかについての明確な説明を手伝ってくれませんか?

助けてくれる人に感謝します。

9
user2031340

このコードを試してください

HTMLコード

<input type="text" id="phone"/>

JSコード

$("#phone").blur(function() {
  var regexp = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/
  var no = $("#phone").val();
  if (!regexp.test(no) && no.length < 0) {
    alert("Wrong phone no");
  }
});
14
Sagar Hirapara

電話番号検証の包括的な正規表現 を参照してください。

クイックチートシート

  • 式を開始します:/^
  • スペースが必要な場合は、[\s]または\sを使用します。
  • 括弧が必要な場合は、[(]および[)]を使用します。 \(\)の使用は醜く、混乱を招く可能性があります。
  • オプションにしたい場合は、その後に?を付けてください
  • ハイフンが必要な場合は、-または[-]と入力するだけです。ただし、他の一連の文字の最初または最後に配置しない場合は、エスケープする必要があります:\-
  • スロットでさまざまな選択肢を受け入れる場合は、オプションを角かっこで囲みます。[-.\s]には、ハイフン、ピリオド、またはスペースが必要です。最後の角かっこの後の疑問符は、それらすべてをそのスロットに対してオプションにします。
  • \d{3}:3桁の番号が必要です:000-999。 [0-9][0-9][0-9]の省略形。
  • [2-9]:そのスロットには2〜9の数字が必要です。
  • (\+|1\s)?:「プラス」または1とスペース(パイプ文字、|は「または」)を受け入れ、オプションにします。 「プラス」記号はエスケープする必要があります。
  • 特定の番号をスロットに一致させる場合は、次のように入力します。[246]には2、4、または6が必要です。[77|78]には77または78が必要です。
  • $/:式を終了します
13
vapcguy

これは長い正規表現ですが、両方の形式をサポートしています(たとえば、有効な国際番号である2は、+または00で始まる必要があります)。

/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

これにより、拡張機能と、フォーマットおよびセパレーターの複数の選択肢が可能になります。

一致:

  • (+351)282 43 50 50
  • 90191919908
  • 555-8909
  • 001 6867684
  • 001 6867684x1
  • 1(234)567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901内線1234
  • 1-234 567.89/01内線1234
  • 1(234)5678901x1234
  • (123)8575973
  • (0055)(123)8575973

$ nで、それは節約します:

  1. 国指標
  2. 電話番号
  3. 延長

これと同じ答えがここに与えられました: 電話番号検証のための包括的な正規表現 (私の答えへの直接リンク)

9
Ismael Miguel
/*
@isValidUSPhoneFormat function will check valid US Format
    Allowed US Format
(123) 456-7890
123-456-7890
123.456.7890
1234567890
(734) 555.1212
*/   

    function isValidUSPhoneFormat(elementValue){  
            var phoneNumberPattern = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s.]{0,1}[0-9]{3}[-\s.]{0,1}[0-9]{4}$/;  
            if(phoneNumberPattern.test(elementValue) == false)
            {
                 var phoneNumberPattern = /^(\()?\d{3}(\))?(.|\s)?\d{3}(.|\s)\d{4}$/; 
                 return phoneNumberPattern.test(elementValue);   
            }
            return phoneNumberPattern.test(elementValue);  
        }

これがJavaScript正規表現を理解するのに役立ちますように。

1
Pank

試してはいけません。無効な入力であると思われるものを防ぐために、完全に有効な電話番号を入力できない怒ったユーザーが発生する可能性があります。そして、ユーザーが本当に無効な電話番号を入力したい場合、彼/彼女はとにかくそれを行うことができます。

1
Martin Vilcans
function checkPhoneNumber(val) {
    var num = document.getElementById(val).value;
    var mob=/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g;
    if (mob.test(num) == false) {
        alert("Please Enter Valid Phone Number.");
        document.getElementById(val).value = "";
        return false;
    }
     if (num.length > 15) {
        alert("Only 15 characters allowed for Phone Number field.");
        document.getElementById(val).value = "";
        return false;
    }

    return true;
}

試してみてください

0
shafi7468