Java正则表达式未按预期工作

Java正则表达式未按预期工作,java,regex,Java,Regex,不知是否有人能告诉我为什么这个正则表达式不起作用 表达式->^[A-Za-z0-9$&!#-#:;\“']+$ 问题是,它与集合中不存在的字符匹配。例如,单词match正确匹配,单词match~不匹配,但match@和match!不正确匹配 我正在使用java来匹配它,匹配应该相当直接,代码如下: RE re = new RE(expression); return re.match(value); 我知道我可能错过了一些简单得可笑的东西,但如果有人对此有任何想

不知是否有人能告诉我为什么这个正则表达式不起作用

表达式->
^[A-Za-z0-9$&!#-#:;\“']+$

问题是,它与集合中不存在的字符匹配。例如,单词
match
正确匹配,单词
match~
不匹配,但
match@
match!
不正确匹配

我正在使用java来匹配它,匹配应该相当直接,代码如下:

        RE re = new RE(expression);
        return re.match(value);
我知道我可能错过了一些简单得可笑的东西,但如果有人对此有任何想法,我将不胜感激!

我怀疑它的
-
出了问题。避开
-
,看看这是否有帮助


新表达式将是
^[A-Za-z0-9$&!#\-\:;“']+$

问题在于字符集中的连字符
-
。您正在接受从#到#的字符


将其更改为
^[-A-Za-z0-9$&!#?:;\“']+根据您的表达式,$
或escape
-

匹配!是一个可接受的值。这就引出了一个问题:“为什么
m
atch会通过测试?”根据您的说法
m
不在字符类中。您似乎理解类的语法。您甚至似乎知道断言、量词等布鲁诺,这正是问题所在。非常感谢。