我想排除除字母和数字之外的任何字符,但是当我运行程序时无论输入什么,我总是进入while循环。
System.out.println("Please enter the name of the next dancer");
while(!scan.hasNext("^[a-z0-9]+$/i"))
{
System.out.println("Please ensure you only enter letters of the alphabet and numbers bewteen 0 and 9");
scan.nextLine();
}
arrCelebs[celeb] = scan.next();
例如我输入“a”我得到 - System.out.println(“请输入下一位舞者的名字”);
如果我输入“%”
,则相同答案 0 :(得分:2)
/i
不会忽略Java中的大小写,请使用:
"(?i)^[a-z0-9]+$"
或者简单地说:
"^[a-zA-Z0-9]+$"
你的方法中的另一个问题是,默认情况下^
匹配文本的开头,而不是行的开头,所以如果你的第一个输入与正则表达式不匹配,那么下一个输入也不能匹配它,因为它不会在文本的开头。因此,要么让你的锚点符合多行标记(?m)
的行首,要么只删除^
。