为什么在Java中String.matches返回false?
if("test%$@*)$(%".matches("[^a-zA-Z\\.]")) System.exit(0);
if("te/st.txt".matches("[^a-zA-Z\\.]"))
System.exit(0);
即使正则表达式应返回true,程序也不会退出。代码有什么问题?
回答:
matches``true
仅当整个字符串与正则表达式匹配时才返回。在你的情况下,你的正则表达式仅代表 一个 字符不是a-z
,A-Z
或.
。
我怀疑您要检查字符串是否包含您在正则表达式中描述的这些特殊字符之一。在这种情况下,请将您的正则表达式括起来,.*
以使正则表达式匹配整个字符串。哦,您不必逃脱.
character
class内部[.]
。
if ("test%$@*)$(%".matches(".*[^a-zA-Z.].*")) { //string contains character that is not in rage a-z, A-Z, or '.'
以上是 为什么在Java中String.matches返回false? 的全部内容, 来源链接: utcz.com/qa/413233.html