1

番号を検証して正しいオーストラリアの携帯電話番号であることを確認するこの小さな正規表現式をまとめました。私が抱えている問題は、新しいTelstra番号が標準に準拠していないため、エラーが発生することです。

数値形式は、それが受け入れるものです

0421813629、0430091460など..

ただし、3桁の5以上のを使用すると、エラーがスローされるように見え、Telstrasの新しい番号の3桁のスポットには7が含まれます。

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

エラーは?[0-57-9]|3と関係があると思います

4

1 に答える 1

3

私はあなたのために全部を書き直します。正規表現はコンパイルされますが、まだすべてをテストしていません。正規表現は、スペースが削除された文字列に対してのみ機能します(スペースは任意であり、電話番号の意味を変更しないため)。正規表現はウィキペディアの記事に基づいています。エラーが発生した場合は目を見張る幸運を祈ります。また、予備のブロックを割り当てることにした場合は、それを維持する幸運を祈ります。使用中の10^7、10 ^ 6、10 ^ 5、および10^4の数字のブロックをグループ化して正規表現を作成しました。

/^(?:\+?61|0)4(?:[01]\d{3}|(?:2[1-9]|3[0-57-9]|4[7-9]|5[0-15-9]|6[679]|7[3-8]|8[1478]|9[07-9])\d{2}|(?:20[2-9]|444|52[0-6]|68[3-9]|70[0-7]|79[01]|820|890|91[0-4])\d|(?:200[0-3]|201[01]|8984))\d{4}$/

正規表現を保守可能にしたい場合は、電話会社ごとに個別の文字列RegExpを記述してから、文字列を連結し、コンストラクターを呼び出して、文字列から正規表現を作成する必要があります。少し効率が悪いかもしれませんが、それを維持するときは正気を保つでしょう。

于 2012-06-22T12:50:06.670 に答える