我需要用户输入十六进制数字,只要他们的输入包含字符 A-F
或0-9
它不会重新提示他们。
这就是我所拥有的,只要输入的字符串包含 A-F 和/或 0-9,它就会运行,如果您添加其他我不想要的字符,它仍然会运行。
do {
System.out.print("Enter a # in hex: ");
inputHexNum = keyboard.next();
} while(!(inputHexNum.toUpperCase().matches(".*[A-F0-9].*")));
最佳答案
您不能将正则表达式更改为[A-F0-9]+
吗?
因此您的代码如下所示:
do {
System.out.print("Enter a # in hex: ");
inputHexNum = keyboard.next();
} while(!(inputHexNum.toUpperCase().matches("[A-F0-9]+")));
据我了解这个问题,您当前的正则表达式的问题是它允许任何字符出现零次或多次,后跟十六进制字符,后跟任何旧字符零次或多次。这会将整个输入限制为仅包含至少一个由字母 A-F(大写)和数字 0-9 组成的字符。
关于java - 如何检查字符串中是否只出现某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218899/