我试图让Java正则表达式尝试使用Scanner
System.in
函数来验证用户输入。我要验证的是一个用户输入,只能包含字母作为输入,并且可以包含多个单词。如果我输入例如(" Test1")它会抛出一条消息,警告我必须只输入字母,并提示再次输入,但是如果我要输入(&#34) ;测试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和正则表达式的新手,并且一直试图找出一整天都没有成功的错误。
感谢您的时间。
答案 0 :(得分:1)
您需要做的就是在[]
内添加一个空格。我还建议使用^
(声明它必须是字符串的开头)和$
(对于字符串的结尾):
^[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
)