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

为了兼容 unicode:

^[\pL\pN]+$

在哪里

\pL stands for any letter
\pN stands for any number
于 2012-06-28T11:48:11.583 回答
17

现在是 2016 年或更晚,事情有了进展。这匹配 Unicode 字母数字字符串:

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

请参阅参考资料(“Unicode 脚本、块、类别和二进制属性的类”部分)。还有这个我发现有帮助的答案。

于 2016-03-18T08:38:02.407 回答
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 回答
0

要考虑所有 Unicode 字母和数字,Character.isLetterOrDigit可以使用。在 Java 8 中,这可以与String#codePoints和结合使用IntStream#allMatch

boolean alphanumeric = str.codePoints().allMatch(Character::isLetterOrDigit);
于 2021-05-11T20:41:43.973 回答
-1

如果您还想包含外语字母,您可以尝试:

String string = "hippopotamus";
if (string.matches("^[\\p{L}0-9']+$")){
    string is alphanumeric do something here...
}

或者,如果您想允许特定的特殊字符,但不允许其他任何字符。例如对于#or space,您可以尝试:

String string = "#somehashtag";
if(string.matches("^[\\p{L}0-9'#]+$")){
    string is alphanumeric plus #, do something here...
}
于 2019-04-16T15:30:58.727 回答
-1

100% 字母数字 RegEx(它仅包含字母数字,甚至不包含整数和字符,仅包含字母数字)

例如:

特殊字符(不允许)
123(不允许)
asdf(不允许)
1235asdf(允许)


String name="^[^<a-zA-Z>]\\d*[a-zA-Z][a-zA-Z\\d]*$";
于 2016-08-31T13:32:14.343 回答
-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 回答