问题描述
|
我希望我的字符串不包含
*
,;
和$
。我用这个代码
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。
谁能告诉我是什么问题
解决方法
尝试对正则表达式使用using4ѭ。如果您的字符串不包含
*
,;
和$
中的任何一个,它将返回true。我假设您希望您的正则表达式匹配不包含任何这些字符的字符串,因为您已经在[
和]
中使用^
了。
,试试这个正则表达式[^\\\\*;\\\\$]*
。 *和$是正则表达式中的特殊字符。
编辑:如果您使用的是Pattern
,则应使用此正则表达式:String regex = \"^[^\\\\*;\\\\$]*$\"
,因为您要匹配整个字符串。
作为替代方案,您可以只使用url.matches(\"[^\\\\*;\\\\$]*\");
而不需要第一个^和最后一个$,因为该方法始终尝试匹配整个字符串。
,您需要取出^和$,因为它们可以出现在字符串的任何位置。
String regex = \"[\\*,;\\$]\";
请注意,反斜杠将$符号转义。编辑:和*符号。
,您将需要转义一些像这样的字符[\\ ^ *; \\ $]