我正在尝试使用 Java 正则表达式来尝试使用 Scanner
System.in
函数验证用户输入。我试图验证的是一种用户输入,该输入只能包含字母作为输入,并且可以包含多个单词。例如,如果我输入(“Test1”),它会弹出一条消息,警告我只能输入字母,并提示再次输入,但是如果我输入(“Test 1”),那么它会通过我的正则表达式,似乎是空格导致了这个问题,但是在我的正则表达式中添加空格并没有解决我的问题。任何帮助将不胜感激。以下是我的代码中存在问题的部分:
System.out.println("Please enter the your name: ");
while(!input.hasNext("[a-zA-Z]+")){
System.out.println("Your name must consist of only letters");
input.nextLine();
}
String name = input.nextLine();
这对某些人来说可能显然是错误的,但我对 Java 和正则表达式很陌生,并且一整天都在试图找出问题所在,但没有成功。
感谢您的宝贵时间。
最佳答案
您所需要做的就是在[]
内添加一个空格。我还建议使用 ^
(表示它必须是字符串的开头)和 $
(表示字符串的结尾):
^[a-zA-Z ]+$
您还可以使用\s
来选择所有空白,例如Tab
您的完整代码:
System.out.println("Please enter the your name: ");
while(!input.hasNext("^[a-zA-Z ]+$")){
System.out.println("Your name must consist of only letters");
input.nextLine();
}
String name = input.nextLine();
如果您想允许使用 *
等符号,那么所有但数字都可以。您可以使用 \d+
。如果匹配,则打印出错误(您需要删除 while
语句中的 !
)
关于Java Scanner hasNext() 字符串正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519518/