4

私はレバノンの電話番号のこの正規表現を書きました基本的にそれはで始まるべきです

国際コードである00961または+961 、次に市外局番

0から9までの任意の数字、またはセルラーコード「70」または「76」、または

「79」の場合、正確に6桁の数字

私は6桁の部分なしで 次の正規表現をコーディングしました:

^(([0][0]|[+])([9][6][1])([0-9]{1}|[7][0]|[7][1]|[7][6]|[7][8]))$

式に6桁だけ多く許可されるようにコードを追加したい場合:

^(([0][0]|[+])([9][6][1])([0-9]{1}|[7][0]|[7][1]|[7][6]|[7][8])([0-9]{6}))$

正確に6桁ではなく5桁または6桁を受け入れるようです

何が悪いのか見つけるのに苦労しています

4

6 に答える 6

2

この正規表現を使用する((00)|(\+))961((\d)|(7[0168]))\d{6}

于 2012-11-28T11:05:30.673 に答える
1

これは私が使用するものです。

/^(00|\+)961(\d|7[069])\d{6}$/
  • 00または+
  • 961
  • 1桁の数字または70または76または79
  • 6桁の数字
于 2012-11-28T11:06:05.887 に答える
1

7は0から9の[0-9]{1}間であるため、はセルラーコード7xにも一致します。これは、「5桁のセルラー番号」が7桁と6桁以上に一致することを意味します。

于 2012-11-28T11:06:29.990 に答える
0

試す

 /^(00961|\+961)([0-9]|70|76|79)\d{6}$/.test( phonenumber );
//^                                    start of string
// ^^^^^^^^^^^^^                       00961 or +0961
//              ^^^^^^^^^^^^^^^^       a digit 0 to 9 or 70 or 76 or 79
//                              ^^^^^  6 digits
//                                   ^ end of string
于 2012-11-28T11:12:11.423 に答える
0

@ellakが指摘しているように、セラーコードはトラップを形成しています。

/^((00)|(\+))961((\d)|(7[0168]))\d{6}$/.test("009617612345"); // true

ここで、コードは次のように壊れます:00 961 76 12345

しかし、正規表現は実際には次のように壊れます00 961 7 612345。なぜなら、7で一致し\d、残りは正確に6桁で結合され、一致するからです。

これが実際に有効かどうかはわかりませんが、これはあなたが望むものではないと思います。そうでない場合は、質問の正規表現が機能するはずです。

トラップを回避するちょっと長い正規表現は次のとおりです。

/^(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})$/

いくつかのテスト結果:

/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009617012345")
  false
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009618012345")
  true
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("009617612345")
  false
/(00|\+)961([0-68-9]\d{6}|7[234579]\d{5}|7[0168]\d{6})/.test("0096176123456")
  true
于 2012-11-29T05:24:17.197 に答える
0

つい最近、レバノンの電気通信省は、IMSの市外局番を変更しました。したがって、現在の正規表現マッチャーは次のようになります。

^(00|\+)961[ -]?(2[1245789]|7[0168]|8[16]|\d)[ -]?\d{6}$
  • プレフィックス:00または+
  • 国コード:961
  • 市外局番:1桁または2桁。2 *、7 *、8 * ...、または0 *で始まる古いIMSネットワーク上のOgero番号の1桁、および最後に03で始まる古いモバイル回線を含みます。
  • 6桁の数字

the961.comのニュース

于 2021-08-17T14:35:58.313 に答える