[ ]で囲まれたものはその集合のどれか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