2013-03-03 123 views
0

我使用下面的模式来匹配我的字符串:正则表达式允许的特殊字符

[A-ZA-Z0-9] *

即使当我传递字符串*$#,它通过正则表达式进行匹配。有人可以解释我做错了什么或为什么会发生这种情况?

+3

显示您的匹配代码。请注意,您的正则表达式匹配空字符串。 '*'表示零个或多个字符 – 2013-03-03 13:07:48

+0

更改为*,将工作吗? – VladL 2013-03-03 13:09:54

+0

@VladL不幸的是,这将无法正常工作...''+'不会做任何接受匹配至少一个字符.. – Anirudha 2013-03-03 13:13:35

回答

3

您应该使用^(字符串的开头)和$(字符串的末尾)。

所以,正则表达式将

^[a-zA-Z0-9]*$ 

[a-zA-Z0-9]*将匹配任何地方在字符串中如果使用find method..Using ^$将整个输入从开始直到匹配结束

如果您使用matches方法,您不需要有^$,因为它试图匹配整个字符串

+0

感谢您的解释,它有帮助。 – Logan 2013-03-05 02:08:01

2

[a-zA-Z0-9]*表示0或更多任何这些字符。如果您使用的是Matcher.find(),它会在任何地方/任何地方发现它,因为它可以匹配任何字符串中的任意位置。

相关问题