9

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

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

例:

  1. +44 (0) 207 111 1111

  2. 442071111111

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

検証のために上記をどのように記述する必要があるかについて、誰かが明確な説明を手伝ってくれませんか?

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

4

7 に答える 7

14

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

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");
  }
});
于 2013-02-01T05:04:50.937 に答える
13

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

クイックチートシート

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

これは長い正規表現ですが、両方の形式をサポートしています (たとえば、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. 延長

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

于 2014-01-08T09:51:56.713 に答える
1

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

于 2014-01-14T15:21:12.467 に答える
1
/*
@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 RegEx を理解するのに役立ちますように..

于 2013-03-06T18:47:07.930 に答える
0
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;
}

お試しください

于 2016-04-05T07:03:58.660 に答える
0

libphonenumber-jsパッケージのisValidPhoneNumber(phoneNumber, countryCode)メソッドを使ってみてください。1つ目は「+」で始まる電話番号です。2 番目の引数は国コードです (例: 'US'、'IN')。これにより、国際番号を正確に検証できます。

于 2021-03-24T14:22:02.157 に答える