2016-09-26 8 views
1

私は長さ7の電話番号を検証する方法を探しています。これは8600000-9999999の怒りの中にあります(これはニュージーランドの地域です。なぜなら、ジーランド - これまで)。誰でもこれを行うことができるregExを知っていますか?8600000-9999999の範囲のregEx?

私はJSには新人ですが、これを行うには正規表現が最適だと思います。 (わからない場合)

注:電話番号の入力データタイプはテキストです。 (私は数字を使うことができると知っていますが、それにバグがありました)

EDIT - 行/区切りなし、数字だけです。 (ちょうど非常に速い答えはうわー)

ありがとうございます!

+0

些細なはずです。数字は何かで区切られていますか? – TylerY86

+2

「数字を使うことはできますが、バグがありました。」ここでは、これらの「バグ」について簡単に質問できます。私にとっては、正規表現は必要ありません。私は単に数字を使います。 –

+2

'x> 8600000 && x <9999999' – ASDFGerte

答えて

3

この1つは実際には非常に簡単です:

/8[6-9][0-9]{5}|9[0-9]{6}/ 

限り、あなたはとにかく、セパレータを必要としないと。

それは従うことも非常に簡単です:

  • 8はリテラル文字8.
  • [6-9]マッチ文字6〜9のASCIIの範囲(両端を含む)である任意の1文字に一致します。これは、任意の6,7,8または9のいずれかに一致することを意味します。
  • 同様に、[0-9]は、0から9の文字とASCIIの範囲の1文字に一致します。これは "任意の1桁"と同義です。
  • {5}は、「先行するトークンを5回一致させる」ことを意味します。この場合、[0-9]に適用されます。つまり、5桁の行に一致します。
  • 正規表現内の|(パイプ)文字は、交互に表示されます。つまり、「右または左のパターンと一致する」ことを意味します。これは、正規表現が2つの異なるケースを処理する方法です。つまり、8600000-8999999は左側のパターンで処理され、9000000-9999999は右側のパターンで処理されます。
+0

これは9200000と一致しません。例えば、 –

+0

は0-9の範囲外のユニコード数字と一致します。 (例えば「」)彼は0-9を具体的に望んでいると思います。 – TylerY86

+0

私はすべての苦情に対処しました。 –

3

正規表現/(?:9[0-9]|8[6-9])[0-9]{5}/を使用できます。
regex101.comclickと再生し、いくつかのテストケースを見ることができます。ここで

は(regex101.comによって提供される)内訳です:

  • (?:9[0-9]|8[6-9])非キャプチャグループ
    • 第一オルタナティブ:9[0-9]|
      • 9の左には、文字通り
      • を文字9に一致します
      • [0-9]と一致する8[6-9]、右|
        • 8一致する文字8:
          • 0-9 0と9
      • 2代替の範囲内の単一の文字の下のリストに存在ngle文字文字通り
      • [6-9]以下のリストにある1文字に一致します
        • 6-9 6,9
  • [0-9]{5}マッチの間の範囲内の単一の文字
    • 0-9範囲内の単一の文字の下のリストに存在する単一の文字0から9の間
    • {5}正確に5 tim ES
+0

は一致しません9200000 –

+0

一致する式を更新しています... – TylerY86