java(jdk 1.6)正则表达式

时间:2014-06-19 14:47:41

标签: java regex jdk1.6

我想检查给定字符串中是否存在任何特殊字符。 我尝试了以下模式,但没有奏效。因此,如果有任何有效答案,将会有所帮助。

Pattern p = Pattern.compile("[\\*&]");
Matcher m = p.matcher("a*a&a");
boolean b = m.matches();

if (b) {
    System.out.println("Found");
} else {
    System.out.println("Not Found");
}

它在javascript中工作。即[\ *&]。

3 个答案:

答案 0 :(得分:3)

而不是:

boolean b = m.matches();

使用:

boolean b = m.find();

Matcher#matches仅在匹配从开始到结束的完整输入时返回true。

答案 1 :(得分:0)

matches()使用^$(分别为行首和行尾)自动锚定正则表达式。您的正则表达式因此转换为^[\\*&]$,它只匹配字符串"*""&"

您正在寻找:.*[\\*&].*

附注:嵌套在类中时,您无需转义*[*&]表现为[\\*&]

答案 2 :(得分:0)

你的不匹配,因为它只是在寻找*&

查看contains的简单方法是在开头和结尾放置带有.*的正则表达式,例如:

Pattern p = Pattern.compile(".*[\\*&].*");