Java中如何用正则表达式精准验证true和false的精确值?
精准匹配"true"/"false"的正则解决方案
需求明确:仅当输入字符串**严格等于"true"或"false"**时返回success,输入null或任何其他内容(包括包含true/false的非完整匹配字符串)均返回error。
现有代码问题
当前使用的正则.*true.*和.*false*.匹配范围过大:只要字符串中包含"true"或"false"子串就会判定为有效,导致tttrue、trueeee、true#这类不符合要求的输入被误判为success。
修正方案
使用锚定整个字符串的正则表达式:^true$ 和 ^false$。其中:
^匹配字符串的起始位置$匹配字符串的结束位置
确保只有当输入字符串完全等于"true"或"false"时才会匹配成功。
修正后的Java代码
... public static Boolean isValidAcceptanceField(String acceptanceValue){ Boolean flag = false; if(acceptanceValue != null && (acceptanceValue.matches("^true$") || acceptanceValue.matches("^false$"))) flag = true; return flag; } ....
验证所有场景
修正后所有测试场景均能得到正确结果:
| acceptanceValue | Output |
|---|---|
| null | error |
| trrrrue | error |
| truuuuue | error |
| peter | error |
| faaalse | error |
| falllse | error |
| fal#se | error |
| tttrue | error |
| trueeee | error |
| ffffalse | error |
| falseee | error |
| true# | error |
| true | success |
| false | success |
内容的提问来源于stack exchange,提问作者GeekToLearn
相关产品推荐
相关产品推荐

