Java 用于检查字符串是否严格为字母数字的正则表达式
如何检查字符串是否仅包含数字和字母,即是否为字母数字?使用字符类:Java 用于检查字符串是否严格为字母数字的正则表达式,java,regex,alphanumeric,Java,Regex,Alphanumeric,如何检查字符串是否仅包含数字和字母,即是否为字母数字?使用字符类: ^[[:alnum:]]*$ 请参阅的文档 假设使用US-ASCII字母表(a-z,a-z),您可以使用\p{Alnum} 检查行是否仅包含此类字符的正则表达式是“”^[\\p{Alnum}]*$” 它也匹配空字符串。要排除空字符串:“^[\\p{Alnum}]+$”考虑到要检查ASCII字母数字字符,请尝试以下操作: “^[a-zA-Z0-9]*$”。在字符串中使用此正则表达式。匹配(正则表达式),如果字符串是字母数字,则返
^[[:alnum:]]*$
请参阅的文档
假设使用US-ASCII字母表(a-z,a-z),您可以使用\p{Alnum}
检查行是否仅包含此类字符的正则表达式是“”^[\\p{Alnum}]*$”
它也匹配空字符串。要排除空字符串:
“^[\\p{Alnum}]+$”
考虑到要检查ASCII字母数字字符,请尝试以下操作:
“^[a-zA-Z0-9]*$”
。在字符串中使用此正则表达式。匹配(正则表达式)
,如果字符串是字母数字,则返回true,否则返回false
public boolean isAlphaNumeric(String s){
String pattern= "^[a-zA-Z0-9]*$";
return s.matches(pattern);
}
如果有帮助,请阅读本文以了解有关正则表达式的更多详细信息:尝试此[0-9a-zA-Z]+仅用于
至少包含一个字符的alpha和num
可能需要修改,以便对其进行测试
要与unicode兼容,请执行以下操作:
^[\pL\pN]+$
在哪里
现在是2016年或更晚,事情已经有所进展。这与Unicode字母数字字符串匹配:
^[\\p{IsAlphabetic}\\p{IsDigit}]+$
请参阅(部分“Unicode脚本、块、类别和二进制属性的类”)。还有一点我觉得很有用。100%字母数字正则表达式(它只包含字母数字,甚至不包含整数和字符,只包含字母数字)
例如:
特殊字符(不允许)123(不允许)
asdf(不允许)
1235asdf(允许)
String name=“^[^]\\d*[a-zA-Z][a-zA-Z\\d]*$”;
要检查字符串是否为字母数字,可以使用一种方法检查字符串中的每个字符并检查其是否为字母数字
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;
}
public静态布尔值isAlphaNumeric(字符串s){
对于(int i=0;i
如果您还想包含外语字母,可以尝试:
String string = "hippopotamus";
if (string.matches("^[\\p{L}0-9']+$")){
string is alphanumeric do something here...
}
String string = "#somehashtag";
if(string.matches("^[\\p{L}0-9'#]+$")){
string is alphanumeric plus #, do something here...
}
或者,如果你想允许一个特定的角色,但不允许任何其他角色。例如,对于#或空格,您可以尝试:
String string = "hippopotamus";
if (string.matches("^[\\p{L}0-9']+$")){
string is alphanumeric do something here...
}
String string = "#somehashtag";
if(string.matches("^[\\p{L}0-9'#]+$")){
string is alphanumeric plus #, do something here...
}
考虑所有Unicode字母和数字,可以使用。在Java8中,这可以与and结合使用
试试这个:/^[a-z0-9]+$/i也检查一下[1]:-1,因为它不包括所有字母数字字符。M42的响应更好。如果
使用不当,则返回s.matches(模式)
*允许空字符串,使用+,如下:^[a-zA-Z0-9]+$是否确实需要在开头和结尾添加边界匹配器(^,$)?它似乎是字符串模式=“[a-zA-Z0-9]+”因为+是贪婪的,所以code>的行为方式相同。需要正则表达式来检查字符串是否不包含“test”并且只包含字母和空格。请帮助这是一个正确的想法,但事实是,问题被标记为Java。如前所述,答案的等效Java语法为“”^[\\p{Alnum}]*$”
。(如果网站指南认为此类标记不够明显,请告诉我,我会对问题本身进行评论。:)不起作用。Giving:java.util.regex.PatternSyntaxException:index 5.IntelliJ附近的Unicode属性不正确也表明\\p{Alnum}
(但这是在java 13中)@Erk我相信这从java 7开始就存在了:@slugmandrew,很高兴知道。我在避险。似乎有一个可以追溯到Java6。但不是java 5,它甚至似乎没有模式类。所以a12
不是字母数字?
String string = "hippopotamus";
if (string.matches("^[\\p{L}0-9']+$")){
string is alphanumeric do something here...
}
String string = "#somehashtag";
if(string.matches("^[\\p{L}0-9'#]+$")){
string is alphanumeric plus #, do something here...
}
boolean alphanumeric = str.codePoints().allMatch(Character::isLetterOrDigit);