我希望我的字符串不包含*
,;
和$
。我用这个代码
private static boolean IsMatch(String s, String pattern) {
try {
Pattern patt = Pattern.compile(pattern);
Matcher matcher = patt.matcher(s);
return matcher.matches();
} catch (RuntimeException e) {
return false;
}
}
String regex ="[^*;$]";
System.out.println(IsMatch(url,regex));
但是这个方法总是返回false。 任何人都可以告诉我这是什么问题
答案 0 :(得分:4)
尝试使用[^*;$]*
作为正则表达式。如果您的字符串不包含任何*
,;
和$
,则会返回true。我假设您希望正则表达式匹配不包含任何字符的字符串,因为您已在^
和[
内使用]
答案 1 :(得分:2)
试试这个正则表达式[^\\*;\\$]*
。 *和$是正则表达式中的特殊字符。
编辑:如果您使用Pattern
,则应使用此正则表达式:String regex = "^[^\\*;\\$]*$"
,因为您希望匹配整个字符串。
作为替代方案,您可以使用url.matches("[^\\*;\\$]*");
,而不需要第一个^和最后一个$,因为该方法会尝试匹配整个字符串。
答案 2 :(得分:0)
你需要取出^和$,因为它们可以出现在你的字符串中的任何地方。
String regex = "[\*,;\$]";
注意转义$符号的反斜杠。编辑:和*符号。
答案 3 :(得分:0)
您需要转义一些像[\ ^ *; \ $]
这样的字符