36

123-345-3456(078)789-8908JavaScript を使用して電話番号を検証しようとしています。これが私のコードです

function ValidateUSPhoneNumber(phoneNumber) {
  var regExp = /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}/;
  var phone = phoneNumber.match(regExp);
  if (phone) {
    alert('yes');
    return true;
  }
  alert('no');
  return false;
}

ValidateUSPhoneNumber('123-345-34567')正規表現に従って無効な最後のハイフンの前に5桁の数字を使用して関数をテストしています。しかし、関数は true を返します。誰でも理由を説明できますか?

4

15 に答える 15

47

電話番号を検証する JavaScript:

function phonenumber(inputtxt) {
  var phoneno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
  if(inputtxt.value.match(phoneno)) {
    return true;
  }
  else {
    alert("message");
    return false;
  }
}

上記のスクリプトは以下に一致します。

XXX-XXX-XXXX
XXX.XXX.XXXX
XXX XXX XXXX


+XX-XXXX-XXXX
+XX.XXXX.XXXX
+XX XXXX XXXXのように番号の前に + 記号を使用する場合は
、次のコードを使用します。

function phonenumber(inputtxt) {
  var phoneno = /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/;
  if(inputtxt.value.match(phoneno)) {
    return true;
  }  
  else {  
    alert("message");
    return false;
  }
}
于 2013-08-22T09:16:16.313 に答える
1

^(\(?[0-9]{3}\)?)((\s|\-){1})?[0-9]{3}((\s|\-){1})?[0-9]{4}$

米国の電話番号を検証していると仮定すると、これでうまくいきます。

まず、0 個または 1 個の開き括弧の開始を許可します\(?

次に、0 ~ 9 の間の 3 つの連続する数字を許可します。[0-9]{3}

その後、最初のステップを繰り返し、0 個または 1 個の閉じ括弧を許可します\)?

2 番目のグループ化では、スペースまたはハイフンを 0 回または 1 回許可することから始めます。((\s|\-){1})?

これを 2 番目と 3 番目の数字のグループ間で繰り返し、3 桁の連続を確認し、次に 4 桁の連続を確認して終了します。米国の電話番号の場合、これは人々が番号をフォーマットするさまざまな方法のベースをカバーしていると思いますが、不合理な文字列を渡すことができないほど十分に制限されています.

于 2016-01-29T16:25:39.160 に答える
1

JavaScript では、次の正規表現を電話番号に使用できます。

^((\+1)?[\s-]?)?\(?[1-9]\d\d\)?[\s-]?[1-9]\d\d[\s-]?\d\d\d\d

例えば; 9999875099、8750999912など

参考:https ://techsolutions.filebizz.com/2020/08/regular-expression-for-phone-number-in.html

于 2020-10-08T14:08:07.397 に答える
0

\b正規表現の最後に単語境界を追加します。

/^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}\b/

後のスペース)がオプションの場合:

/^(\([0-9]{3}\)\s*|[0-9]{3}-)[0-9]{3}-[0-9]{4}\b/
于 2013-08-22T09:06:10.423 に答える