java - 如何检查字符串中是否只出现某些字符?

标签 java regex methods

我需要用户输入十六进制数字,只要他们的输入包含字符 A-F0-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/

相关文章:

python - 从文本中抓取行但未能获得多个返回

mysql - 正则表达式不适用于单/双引号

c++ - 如何用方法调用替换 `{ lock_guard lock(obj.mut); obj.a_stringstream << a << b/*...*/<< n;}`

java.lang.RuntimeException : Unable to instantiate activity (unable to open DEX file)

java - 自动计算字段和用户输入值的设计模式

java - 用java编写哈希函数的最佳实践是什么?

java - 创建一个方法来验证用户 ID

java - JDK 中可用的 MessageDigest 的完整列表

javascript - 如何将新行匹配为一个?

java - 无法访问另一个类的方法