58

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

4

12 に答える 12

86

ASCII英数字をチェックしたい場合は、これを試してください: "^[a-zA-Z0-9]*$". でこの正規表現を使用しString.matches(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

于 2012-06-28T09:38:27.570 に答える
25

ユニコード互換にするために:

^[\pL\pN]+$

どこ

\pL stands for any letter
\pN stands for any number
于 2012-06-28T11:48:11.583 に答える
11

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

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

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

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

于 2012-06-28T09:36:48.587 に答える
5

文字クラスを使用する:

^[[:alnum:]]*$
于 2012-06-28T09:33:36.743 に答える
4
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$");
Matcher matcher = pattern.matcher("Teststring123");
if(matcher.matches()) {
     // yay! alphanumeric!
}
于 2012-06-28T09:39:52.683 に答える
1

これを試してください [0-9a-zA-Z]+ for 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()) {

}
于 2012-06-28T09:39:54.607 に答える
0

を含めるには[a-zA-Z0-9_]、 を使用できます\w

だからmyString.matches("\\w*")。(.matches文字列全体に一致する必要があるため、^\\w*$必要ありません。.find部分文字列に一致できます)

https://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

于 2021-07-19T21:54:49.337 に答える
-4

文字列が英数字かどうかを確認するには、文字列内のすべての文字を調べて英数字かどうかを確認するメソッドを使用できます。

    public static boolean isAlphaNumeric(String s){
            for(int i = 0; i < s.length(); i++){
                    char c = s.charAt(i);
                    if(!Character.isDigit(c) && !Character.isLetter(c))
                            return false;
            }
            return true;
    }
于 2019-03-18T20:03:32.413 に答える