2015-10-19 17 views
5

私はJava正規表現を使用してユーザー名を検証しています。Java Regexはユーザー名の長さを検証します

  1. ユーザー名には、英数字またはアンダースコア(_)を使用できます。

  2. ユーザー名は数字で始めることはできません。

  3. 8≤|ユーザー名| ≤30

Iは、次の正規表現になってしまった:問題は長< 8を有するものが防止されているが長さ> 30とユーザ名が防止されていないことである

String regex="^([A-Za-z_][A-Za-z0-9_]*){8,30}$"; 

。私の正規表現で何が間違っていますか?

を使用でき

答えて

11

String pattern = "^[A-Za-z_][A-Za-z0-9_]{7,29}$"; 

^[A-Za-z_]は、入力が30に全体の長さ8を作ってください7ワード文字の29には、最後にある可能アルファベットで始まりまたはアンダースコア、その後[A-Za-z0-9_]{7,29}$保証します。

それともあなたはそれを短縮することができます。

String pattern = "^[A-Za-z_]\\w{7,29}$"; 

あなたの正規表現は、アルファベットで始まる、または任意の長さの単語文字が続くアンダー意味([A-Za-z_][A-Za-z0-9_]*)の8〜30のインスタンスと一致するようにしようとしています。

関連する問題