質問するログイン新規登録

回答編集履歴

3

root_jpさんのご指摘について追記しました。

2016/08/12 08:48

投稿

argius
argius

スコア9396

answer CHANGED
@@ -6,12 +6,16 @@
6
6
  1文字以上なので、`+`をつけます。
7
7
  `[-_@+*;:#$%&A-Za-z0-9]+`となります。
8
8
 
9
- また、`A-Za-z0-9`は`\w`と書くことができます。ただし、Javaの正規表現は文字列として書かなければならず、`\`を書く場合はそれ自体をエスケープする必要があり、`\\w`と書きます。(sipadan2003さんにコメントでご指摘いただいた通りです。)
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

コメントでご指摘いただいたエスケープについての説明を追記しました。

2016/08/12 08:48

投稿

argius
argius

スコア9396

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
- また、`A-Za-z0-9``\w`と書くことができます。
10
+ 正規表現リテラルがある言語などで、エスケープせずに書くことができるものもあります。
11
+
10
12
  `String#matches`メソッドは、文字列全体にマッチしますのでこれで完成です。
11
13
 
12
14
 

1

「1文字」を追記しました。

2016/08/10 17:44

投稿

argius
argius

スコア9396

answer CHANGED
@@ -1,4 +1,4 @@
1
- `[ ]`で囲まれたものはその集合のどれかに一致することを表します。
1
+ `[ ]`で囲まれたものはその集合のどれか1文字に一致することを表します。
2
2
  英字は`[A-Z][a-z]`、数字は`[0-9]`、記号(今回の場合)は`[_-@+*;:#$%&]`です。
3
3
  これらはまとめて書くことができます。
4
4
  ハイフンはそのままだと別の意味(範囲を表す)になってしまうので、先頭に置くか、エスケープします。