「Java」任意の文字のみにマッチする正規表現

Java の Pattern API を使って任意の文字のみにマッチする正規表現を使ったサンプルです。

■ AnyCharMatch.java

package test.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AnyCharMatch {

  private static final Pattern pattern = Pattern.compile("^[aA0-9_\\.@]+$");
  
  public static boolean test(String input) {
    Matcher m =  pattern.matcher(input);
    return m.find();
  }
  
  public static void main(String[] args) {
    System.out.println("1:" + test("aA_.@0123456789"));
    System.out.println("2:" + test("01234aA"));
    System.out.println("3:" + test("aA"));
    System.out.println("4:" + test("_.@"));
    System.out.println("5:" + test("01234"));
    System.out.println("6:" + test("BaA_.@"));
    System.out.println("7:" + test("aA_B.@"));
    System.out.println("8:" + test("aA_.@B"));
    System.out.println("9:" + test("BaA_.@B"));
  }

}

■ 実行結果

1:true
2:true
3:true
4:true
5:true
6:false
7:false
8:false
9:false


上記のサンプルは a、A、数字、_、. ( 特に \ でエスケープしなくても動作するっぽいですがサンプルでは念のためエスケープしてます )、@ からなる文字列のみマッチする感じになります。^ が行の先頭、$ が行の末尾、+ がひとつ前を 1 回以上なので "^[aA0-9_\\.@]+$" と書くと [aA0-9_\\.@] で始まってそれが一回以上続いてそれで終わる、という意味になります。

・Pattern (Java Platform SE 8 )
https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html


簡単ですが以上になります。

[ 環境情報 ]
Windows 7 SP1
Java SE 8 Update 74