用于检查字符串是否严格是字母数字的正则表达式

O__*_*__O 49 java regex alphanumeric

如何检查字符串是否只包含数字和字母表,即.是字母数字?

Rag*_*hav 75

考虑到您要检查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);
}
Run Code Online (Sandbox Code Playgroud)

它将有助于有关正则表达式的更多详细信息,请阅读http://www.vogella.com/articles/JavaRegularExpressions/article.html

  • -1,因为这不包括所有字母数字字符.M42的反应更好. (8认同)
  • 使用"if"的方法不好,最好是`return s.matches(pattern)` (8认同)
  • *允许空字符串,使用+,如下所示:^ [a-zA-Z0-9] + $ (2认同)

Tot*_*oto 24

为了兼容unicode:

^[\pL\pN]+$
Run Code Online (Sandbox Code Playgroud)

哪里

\pL stands for any letter
\pN stands for any number
Run Code Online (Sandbox Code Playgroud)


Joh*_*der 12

它是2016年或更晚,事情已经取得了进展.这匹配Unicode字母数字字符串:

^[\\p{IsAlphabetic}\\p{IsDigit}]+$
Run Code Online (Sandbox Code Playgroud)

请参阅参考("Unicode脚本,块,类别和二进制属性的类"一节).还有这样的回答,我发现有帮助的.


sud*_*ode 9

请参阅Pattern的文档.

假设US-ASCII字母表(az,AZ),您可以使用\p{Alnum}.

检查一行只包含这些字符的正则表达式是"^[\\p{Alnum}]*$".

这也匹配空字符串.要排除空字符串:"^[\\p{Alnum}]+$".


Igo*_*bin 5

使用字符类:

^[[:alnum:]]*$
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的想法,但[POSIX字符类语法](http://en.wikipedia.org/wiki/Regular_expression#Character_classes)[在Java中无效](http://docs.oracle.com/javase/ 7/docs/api/java/util/regex/Pattern.html),问题被标记为Java.您的答案的等效Java语法是"^ [\\ p {Alnum}]*$",如下文所述(http://stackoverflow.com/a/11241830/1840078).(如果这些标记不被网站指南认为是足够引人注目的,请告诉我,我会在问题本身添加评论.:)) (4认同)