如何检查字符串是否只包含数字和字母表,即。是字母数字?
考虑到要检查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
要检查String是否为字母数字,可以使用遍历字符串中每个字符的方法并检查它是否为字母数字。
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;
}
为了兼容unicode:
^[\pL\pN]+$
哪里
\pL stands for any letter
\pN stands for any number
它是2016年或更晚,事情已经取得了进展。这匹配Unicode字母数字字符串:
^[\\p{IsAlphabetic}\\p{IsDigit}]+$
请参阅the reference(“Unicode脚本,块,类别和二进制属性的类”一节)。还有this answer,我发现有帮助。
请参阅Pattern的文档。
假设US-ASCII字母表(a-z,A-Z),您可以使用\p{Alnum}
。
检查一行只包含这些字符的正则表达式是"^[\\p{Alnum}]*$"
。
这也匹配空字符串。要排除空字符串:"^[\\p{Alnum}]+$"
。
使用字符类:
^[[:alnum:]]*$
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$");
Matcher matcher = pattern.matcher("Teststring123");
if(matcher.matches()) {
// yay! alphanumeric!
}
试试这个[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()) {
}
如果您还想包含外语字母,可以尝试:
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...
}
100%字母数字RegEx(它只包含字母数字,甚至不包含整数和字符,只包含字母数字)
例如:
特殊字符(不允许) 123(不允许) asdf(不允许) 1235asdf(允许)
String name="^[^<a-zA-Z>]\\d*[a-zA-Z][a-zA-Z\\d]*$";