2012-01-11 16 views
2

電話番号の正規表現を書くときに問題があります。 (あまりにも偉大な彼らにはまだ) 数だけ含まれていてもよい:私は考えていた0-9,+,/,.,-, ,(,) を:java正規表現0-9と一部の特殊文字

@Pattern(regexp = "(0-9+/\\.\\- \\(\\))?") 

をしかし、私はちょうど100

答えて

3

[0-9\.\-\s+\/()]+

この正規表現を試してみてくださいを入力するときには、すでに文句しかし、あなたの説明と私の正規表現によれば、それはまた+++またはそのような単一のスペースまたは何かを許可するでしょう、それはあなたが欲しいものですか?

EDIT:そう、以下を使用した方がよいかもしれません:([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15}

少なくとも8-15の番号を必要とし、それらの間で表示されるように他の文字を許可します。

+0

まあ、ない私が何をしたいが、それは私が必要なものです。私たちのウェブデザイナーは、ユーザーに多くの自由を与え、正確なデータを入力するという善意を信用することをあまりにも好んでいる。 –

0

角かっこを使用して文字クラスを作成する必要があります。

[0-9+/.()-]+ 

this expression on Regexrを参照してください

(なぜなら最後の数量詞+の)クラス内から1回以上の任意の文字に一致する。しかし、これはでそれらの文字に一致することを意味します

任意注文、例えば"....."は一致します。

あなたの正規表現(0-9+/\\.\\- \\(\\))?振る舞うこの方法:その後、

マッチ "0-" "/.-()" に続くナインのシーケンス。囲む括弧の後に?があるため、パターン全体はオプションです。つまり、空の文字列にも一致します。特殊文字は[]の内側に異なる方法で処理され、そして-に対処するための最良の方法は、最初にそれを置くことです -

は、私はあなたが"[-0-9+/.()]+"をしたいと思いますyour expression on Regexr

+0

これは国際電話番号の場合に有効です。 –

+0

@SureshSankarこれは、文字 "0-9 + /。\\ - ()"のみで構成される文字列に一致します。これは多くの自由を許すでしょう。 "++++((((("( "("( "(")と一致するでしょう。 – stema

0

を参照してください。

+0

または最後に '-'を入れます。 –

0
@Pattern(regexp = "^[0-9+/.()-]+$") 
0

正しいパターン:あなたが見ることができる正規表現を分割することにより^[\d\/\(\)\- \.]+$

^ #Won't match if it doesn't start at the beginning 
[ #The character can contain... 
\d #digits 
\/ #slash 
\( #brackets (open) 
\) #brackets (close) 
\- #hyphen 
    #space (\s is also possible but can be tab too) 
\. #or a dot 
] 
+ #The character can be repeated 
$ #Won't match if it doesn't reach the end 
+0

文字クラス内でバックスラッシュもブラケットもエスケープする必要はないと思います –

関連する問題