3

要件に対して個別の正規表現検証がありますが、それらを 1 つにまとめるのに苦労しています。私は、国コードまたは 00 で始まる検証用の携帯電話番号であり、# で区切られた内線番号 (2 ~ 5 桁) が含まれている場合

以下は、有効な Number の例です。

+919986040933
00919986040933
+919986040933#12
+919986040933#123
+919986040933#1234
+919986040933#12345

上記を検証するために、次の正規表現があります。

var phoneRegexWithPlus = "^((\\+)|(00))[0-9]{10,14}$";
var phoneRegexWithZero = "^((\\+)|(00))[0-9]{9,12}$";
var phoneRegexExtension = "^[0-9]{2,5}$";

現在、番号に # が含まれているかどうかを確認しています。含まれている場合は、それを分割し、番号と拡張部分を別々に一致させます。ハッシュの後に拡張が来る場所です。

私の問題は、上記の3つを組み合わせて1つの正規表現を作成する必要があることです。正規表現が苦手なので、誰かがそれを手伝ってくれますか。前もって感謝します。

4

1 に答える 1

1

私はこの表現を提案します:

^\+?(?:00)?\d{12}(?:#\d{2,5})?$

正規表現のデモを見る

式説明

  • ^- 文字列の開始
  • \+?- オプションのプラス ( 1 回または 0 回に?一致)+
  • (?:00)?- オプション00
  • \d{12}- 正確に 12 桁の文字列
  • (?:#\d{2,5})?- オプションの (繰り返しますが、?1 回または 0 回一致する) 以下のシーケンス:
    • #- リテラル ハッシュ記号
    • \d{2,5}- 2 桁から 5 桁 (あなたのphoneRegexExtension)
  • $- 文字列の終わり。

phoneRegexWithPlusおよびは、12 ~ 14 桁に一致phoneRegexWithZeroする最初の必須部分で覆われ、先頭にオプションのプラス記号があります。\+?(?:00)?\d{12}

: 正規表現は、提供されたサンプル入力に合わせて調整されます。異なる場合は、制限量指定子を調整してください(たとえば、量化されたパターンの 9 ~ 14 回の出現に一致{12}するように置き換えることができます)。{9,14}

于 2016-07-08T14:04:39.393 に答える