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

问题描述:

想知道是否有人能告诉我为什么这个正则表达式不起作用。Java正则表达式不按预期工作

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

的问题是,它的匹配对字符不在集合。例如,单词match正确匹配,单词match~不正确,但[email protected]match!错误地匹配。

我用java与之匹配,匹配应该是相当有下面的代码直截了当:

 RE re = new RE(expression); 
     return re.match(value); 

我知道这可能是一些可笑的简单,我失踪,但如果任何人有对它的任何想法,我会非常感激!

+0

根据你的表达'match!'是一个可接受的值。 – 2012-02-24 16:37:15

+0

这引出了一个问题'为什么''''match会通过测试?'根据你'米'是不是在角色类。你似乎理解类的语法。你甚至似乎知道断言,量词等.. – sln 2012-02-24 16:52:24

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

将其更改为^[-A-Za-z0-9$&!#_?:;\"']+$或转义-

+0

布鲁诺,这正是问题所在。非常感谢你。 – 2012-02-24 17:48:44

我怀疑它的#-_正在表演。逃离-,看看是否有帮助。

新的表达方式会