以下のような携帯電話番号を検証するために正規表現を作成する必要があります。
a)最大12文字
b)。(未定義のポイントで)スペースを許可します
c).0から開始する必要があります
d)。その後に、最大5桁のオプションの内線番号(#記号を含まない)が続く
私は0から12の数字を得るために以下を試してみました。しかし、オプションの内線番号の部分(#とそれに続く番号)を追加する方法がわかりません
^(0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12}))$
以下のような携帯電話番号を検証するために正規表現を作成する必要があります。
a)最大12文字
b)。(未定義のポイントで)スペースを許可します
c).0から開始する必要があります
d)。その後に、最大5桁のオプションの内線番号(#記号を含まない)が続く
私は0から12の数字を得るために以下を試してみました。しかし、オプションの内線番号の部分(#とそれに続く番号)を追加する方法がわかりません
^(0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12}))$
フォーマットごとに正規表現を作成する必要があります。次に、alternation construct を使用して、それらを 1 つの正規表現に結合できます|
。
最初のパターンは最もトリッキーなパターンですが、ゼロ幅の正の先読みアサーションを使用して解決する方法を提供しています (ここでは、スペースは数字の間にのみ許可されていると想定しています)。
(?=\d+ \d+#)[\d ]{12}#\d{5}
次のパターンは簡単です。
\d{11}
最後のパターンの定義は少しあいまいですが、さまざまな仮定を行って、このパターンを選択しました。
\d{1,12}#\d{1,5}
結合された正規表現は次のようになります。
^(?=\d+ \d+#)[\d ]{12}#\d{5}|\d{11}|\d{1,12}#\d{1,5}$
この正規表現を試してください。a、b、c、dの条件を満たす
(?<=^)([\d\s]{13}|\d{12}|0\d{11}|\d{5})(?=$)