gpt4 book ai didi

Java Scanner hasNext() 字符串正则表达式验证

转载 作者:行者123 更新时间:2023-12-01 10:05:24 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com