web-dev-qa-db-ja.com

文字列が厳密に英数字かどうかをチェックするための正規表現

文字列に数字とアルファベットのみが含まれているかどうかを確認するにはどうすればよいですか?は英数字ですか?

49
O__O

ASCIIの英数字を確認したい場合は、"^[a-zA-Z0-9]*$"を試してください。 String.matches(Regex)でこのRegExを使用します。文字列が英数字の場合はtrueを返し、そうでない場合はfalseを返します。

public boolean isAlphaNumeric(String s){
    String pattern= "^[a-zA-Z0-9]*$";
    return s.matches(pattern);
}

役立つ場合は、正規表現の詳細についてこちらをお読みください: http://www.vogella.com/articles/JavaRegularExpressions/article.html

74
Raghav

ユニコード互換性を保つには:

^[\pL\pN]+$

どこ

\pL stands for any letter
\pN stands for any number
24
Toto

2016年以降であり、状況は進歩しています。これは、Unicodeの英数字文字列に一致します。

^[\\p{IsAlphabetic}\\p{IsDigit}]+$

参照 (セクション「Unicodeスクリプト、ブロック、カテゴリ、バイナリプロパティのクラス」)を参照してください。 この回答 もあります。

12
Johannes Jander

パターン のドキュメントを参照してください。

US-ASCIIアルファベット(a-z、A-Z)を想定すると、\p{Alnum}を使用できます。

行にそのような文字のみが含まれていることを確認する正規表現は、"^[\\p{Alnum}]*$"です。

空の文字列にも一致します。空の文字列を除外するには:"^[\\p{Alnum}]+$"

9
sudocode

文字クラスを使用します。

^[[:alnum:]]*$
5
Igor Chubin
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$");
Matcher matcher = pattern.matcher("Teststring123");
if(matcher.matches()) {
     // yay! alphanumeric!
}
3
Seth Malaki

[0-9a-zA-Z] +をonly alpha and num with one char at-leastに試してください。

変更が必要な場合があるので、テストする

http://www.regexplanet.com/advanced/Java/index.html

Pattern pattern = Pattern.compile("^[0-9a-zA-Z]+$");
Matcher matcher = pattern.matcher(phoneNumber);
if (matcher.matches()) {

}
1
Dheeresh Singh