0
"^(((\+44\s?\d{4}|\(?0\d{4}\)?)\s?\d{3}\s?\d{3})|((\+44\s?\d{3}|\(?0\d{3}\)?)\s?\d{3}\s?\d{4})|((\+44\s?\d{2}|\(?0\d{2}\)?)\s?\d{4}\s?\d{4})|((\+44\s?\d{4}|\(?0\d{4}\)?)\s?\d{5})|((\+44\s?\d{5}|\(?0\d{5}\)?)\s?\d{5})|((\+44\s?\d{5}|\(?0\d{5}\)?)\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$";

上記のパターンを使用して、英国の電話番号を検証します。JavaScript(クライアント側)で動作しています。ただし、Javaコード(サーバー側)では機能しません。エラーメッセージにはinvalid escape sequence

4

2 に答える 2

6

\すべてを次のように置き換える必要があります。\\ そうは言っても、電話番号の正規表現は少し複雑なようです。GB(+44)の国コードがかなりの回数含まれているので、1回だけ言うことができると思います。

^(\+44)?(...)

そして、楕円が存在する残りの正規表現。

これを明確にする別のアイデアは、次のように、この正規表現をケースごとにいくつかの正規表現に分割することです。

if (matches case 1) return true; // example of case one
if (matches case 2) return true; // example of case two
if (matches case 3) return true; // example of case tree
...
return false;

私の意見では、このコードは保守がはるかに簡単です。

于 2012-04-10T07:45:42.800 に答える
3

\これは、Javaが文字列を受け入れないため\です(エスケープされていないため)。代わりにエスケープ\してください。\\

于 2012-04-10T07:45:27.963 に答える