Java正则表达式不按预期工作
问题描述:
想知道是否有人能告诉我为什么这个正则表达式不起作用。Java正则表达式不按预期工作
表达 - >^[A-Za-z0-9$&!#-_?:;\"']+$
的问题是,它的匹配对字符不在集合。例如,单词match
正确匹配,单词match~
不正确,但[email protected]
和match!
错误地匹配。
我用java与之匹配,匹配应该是相当有下面的代码直截了当:
RE re = new RE(expression);
return re.match(value);
我知道这可能是一些可笑的简单,我失踪,但如果任何人有对它的任何想法,我会非常感激!
答
的问题是在字符集的连字符-
。您正在接受#到_中的字符。
将其更改为^[-A-Za-z0-9$&!#_?:;\"']+$
或转义-
。
+0
布鲁诺,这正是问题所在。非常感谢你。 – 2012-02-24 17:48:44
答
我怀疑它的#-_
正在表演。逃离-
,看看是否有帮助。
新的表达方式会
根据你的表达'match!'是一个可接受的值。 – 2012-02-24 16:37:15
这引出了一个问题'为什么''''match会通过测试?'根据你'米'是不是在角色类。你似乎理解类的语法。你甚至似乎知道断言,量词等.. – sln 2012-02-24 16:52:24