4

次の携帯電話番号の正規表現は次のとおりです。

^(([+]|[0]{2})([\\d]{1,3})([\\s-]{0,1}))?([\\d]{10})$

有効な数値は次のとおりです。

+123-9854875847
00123 9854875847
+123 9854875847
9878757845

上記の式は、ユーザーが 9 桁または 11 桁の携帯電話番号を入力した場合は検証されませんが、9 桁または 11 桁の番号を+123またはで+91それぞれ入力すると、式のこの部分では([\\d]{1,3})最後の 2 桁がオプションであるため、検証されます。

([\\s-]{0,1}))?([\\d]{10})では、このパーツと結合しないようにする方法はあり([\\d]{1,3})ますか?

4

4 に答える 4

1

内線番号が電話番号の残りの部分から常に分離されている限り、正規表現は正常に機能します。このような分離がない場合、電話番号を正しく検証する方法はありません。

また、内線番号と電話番号の長さは国によって異なる場合があるため、すべてのケースを解決する正規表現は存在しないことに注意してください。許可された拡張子のリストを作成できれば、それを正規表現に組み込んでより適切な一致を得ることができますが、任意の長さの数字の多くのグループでは、多くの間違った一致が得られます。

正規表現を少し簡略化したので、oyu は @Dukeling の提案を実際に見ることができます。あなたの正規表現を上に、私のものを下に。

^(([+]|[0]{2})([\\d]{1,3})([\\s-]{0,1}))?([\\d]{10})$
^(  (\\+|00)    \\d{1,3}    [\\s-]?)?      \\d{10}  $
于 2013-05-09T11:44:37.127 に答える
0

国コードと携帯電話番号の 2 つの部分に分けて入力するのが最善の方法です。その場合、正規表現を使用して簡単に検証できます (国コードと携帯電話番号の両方)。

于 2013-05-09T11:44:26.893 に答える