[ ]
で囲まれたものはその集合のどれか1文字に一致することを表します。
英字は[A-Z][a-z]
、数字は[0-9]
、記号(今回の場合)は[_-@+*;:#$%&]
です。
これらはまとめて書くことができます。
ハイフンはそのままだと別の意味(範囲を表す)になってしまうので、先頭に置くか、エスケープします。
1文字以上なので、+
をつけます。
[-_@+*;:#$%&A-Za-z0-9]+
となります。
また、A-Za-z0-9_
は\w
と書くことができます。ただし、Javaの正規表現は文字列として書かなければならず、\
を書く場合はそれ自体をエスケープする必要があり、\\w
と書きます。(sipadan2003さんにコメントでご指摘いただいた通りです。)
正規表現リテラルがある言語などでは、エスケープせずに書くことができるものもあります。
String#matches
メソッドは、文字列全体にマッチしますのでこれで完成です。
(追記)root_jpさんのコメントのとおり、\w
は_
を含む、が正しいです。\w
にした場合は単独の_
は消してOKです。
ドキュメントにはこう書かれています。
\w 単語構成文字: [a-zA-Z_0-9]
参考リンク:
java.util.regex.Pattern
- Java SE 8 API ドキュメント
https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/10 17:23
2016/08/10 17:45
2016/08/12 05:02
2016/08/12 05:28
2016/08/12 08:06
2016/08/12 08:30
2016/08/12 08:49