0

この形式の電話番号の正規表現を JavaScript で作成するにはどうすればよいですか? 電話番号が次のとおりであることを確認する必要があります

1800YOUSAVE OR 800YOUSAVE OR 8001234567 OR 18001234567

上記はすべて問題ないはずです。ここでスタックオーバーフローについて見た別の投稿に基づいて、次のようにしていますが、1800YOUSAVEまたは800YOUSAVEで失敗します。これらすべてについて、少なくとも最初の 3 つは数字でなければなりません。

var reg1 = /^(?:(?:[0-9]{3}[a-zA-Z0-9]{4,})|(?:[0-9]{1,}))$/; //less than 10
var reg2 = /^(?:(?:[2-9]{3}[a-zA-Z0-9]{7})|(?:[2-9]{1}[0-9]{2,}))$/; //10 digits
var reg3 = /^(?:(?:[1-9]{1}[0-9]{3}[a-zA-Z0-9]{10})|(?:[1-9]{11}))$/; //11 digits
var reg4 = /^(?:(?:[0-9]{7}[a-zA-Z0-9]{7})|(?:[0-9]{1,15}))$/; //12 or more
4

1 に答える 1

0

オプションの先頭の「1」の後に「800」が続き、その後に7文字または7桁が続くように思われるので、以下が適しているはずです:

  var re = /^1?800[a-z]{7}$|^1?800[0-9]{7}$/i;

  alert(re.test('800yousave'));    // true
  alert(re.test('1800yousave'));   // true
  alert(re.test('1800yousavee'));  // false

  alert(re.test('8001234567'));    // true
  alert(re.test('18001234567'));   // true
  alert(re.test('180012345678'));  // false

シンプルにするメリットがあります。次のこともできます。

  var re = /^1?800(?:[a-z]{7}|[0-9]{7})$/i;

編集

「800」ではなく3桁が必要な場合は、次を使用できます。

  var re = /^1?\d{3}(?:[a-z]{7}|[\d]{7})$/i;
于 2013-04-03T01:34:06.243 に答える