让我们说用户输入文字。如何检查相应的String
是否仅由字母和数字组成?
import java.util.Scanner;
public class StringValidation {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter your password");
String name = in.nextLine();
(inert here)
答案 0 :(得分:9)
您可以在字符串对象上调用matches
函数。像
str.matches("[a-zA-Z0-9]*")
如果字符串只包含字母或数字,则此方法将返回true。
String.matches教程:http://www.tutorialspoint.com/java/java_string_matches.htm
正则表达式测试和解释:https://regex101.com/r/kM7sB7/1
答案 1 :(得分:4)
使用正则表达式:
Pattern pattern = Pattern.compile("\\p{Alnum}+");
Matcher matcher = pattern.matcher(name);
if (!matcher.matches()) {
// found invalid char
}
for循环,没有正则表达式:
for (char c : name.toCharArray()) {
if (!Character.isLetterOrDigit(c)) {
// found invalid char
break;
}
}
两种方法都匹配大写和小写字母和数字,但不匹配负数或浮点数
答案 2 :(得分:0)
将正则表达式从[a-zA-Z0-9]
修改为^[a-zA-Z0-9]+$
String text="abcABC983";
System.out.println(text.matches("^[a-zA-Z0-9]+$"));
当前输出:true
答案 3 :(得分:0)
正则表达式字符类\p{Alnum}
可以与String#matches
结合使用。它相当于 [\p{Alpha}\p{Digit}]
或 [a-zA-Z0-9]
。
boolean allLettersAndNumbers = str.matches("\\p{Alnum}*");
// Change * to + to not accept empty String