回答編集履歴
3
root_jpさんのご指摘について追記しました。
answer
CHANGED
@@ -6,12 +6,16 @@
|
|
6
6
|
1文字以上なので、`+`をつけます。
|
7
7
|
`[-_@+*;:#$%&A-Za-z0-9]+`となります。
|
8
8
|
|
9
|
-
また、`A-Za-z0-
|
9
|
+
また、`A-Za-z0-9_`は`\w`と書くことができます。ただし、Javaの正規表現は文字列として書かなければならず、`\`を書く場合はそれ自体をエスケープする必要があり、`\\w`と書きます。(sipadan2003さんにコメントでご指摘いただいた通りです。)
|
10
10
|
正規表現リテラルがある言語などでは、エスケープせずに書くことができるものもあります。
|
11
11
|
|
12
12
|
`String#matches`メソッドは、文字列全体にマッチしますのでこれで完成です。
|
13
13
|
|
14
|
+
(追記)root_jpさんのコメントのとおり、`\w`は`_`を含む、が正しいです。`\w`にした場合は単独の`_`は消してOKです。
|
15
|
+
ドキュメントにはこう書かれています。
|
16
|
+
> \w 単語構成文字: [a-zA-Z_0-9]
|
14
17
|
|
18
|
+
|
15
19
|
参考リンク:
|
16
20
|
|
17
21
|
`java.util.regex.Pattern` - Java SE 8 API ドキュメント
|
2
コメントでご指摘いただいたエスケープについての説明を追記しました。
answer
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
1文字以上なので、`+`をつけます。
|
7
7
|
`[-_@+*;:#$%&A-Za-z0-9]+`となります。
|
8
8
|
|
9
|
+
また、`A-Za-z0-9`は`\w`と書くことができます。ただし、Javaの正規表現は文字列として書かなければならず、`\`を書く場合はそれ自体をエスケープする必要があり、`\\w`と書きます。(sipadan2003さんにコメントでご指摘いただいた通りです。)
|
9
|
-
|
10
|
+
正規表現リテラルがある言語などでは、エスケープせずに書くことができるものもあります。
|
11
|
+
|
10
12
|
`String#matches`メソッドは、文字列全体にマッチしますのでこれで完成です。
|
11
13
|
|
12
14
|
|
1
「1文字」を追記しました。
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`[ ]`で囲まれたものはその集合のどれかに一致することを表します。
|
1
|
+
`[ ]`で囲まれたものはその集合のどれか1文字に一致することを表します。
|
2
2
|
英字は`[A-Z][a-z]`、数字は`[0-9]`、記号(今回の場合)は`[_-@+*;:#$%&]`です。
|
3
3
|
これらはまとめて書くことができます。
|
4
4
|
ハイフンはそのままだと別の意味(範囲を表す)になってしまうので、先頭に置くか、エスケープします。
|