安卓上带正则表达式的java验证字符串
我希望我的字符串不包含*
、;
和$
。我使用这个代码
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。 谁能告诉我有什么问题吗
# 1 楼答案
试试这个正则表达式
[^\\*;\\$]*
.*和$是正则表达式中的特殊字符编辑:如果您使用的是
Pattern
,那么应该使用这个正则表达式:String regex = "^[^\\*;\\$]*$"
,因为您希望匹配整个字符串作为一种替代方法,您可以在不需要第一个^和最后一个$的地方使用
url.matches("[^\\*;\\$]*");
,因为该方法无论如何都会尝试匹配整个字符串# 2 楼答案
尝试对正则表达式使用
[^*;$]*
。如果字符串不包含*
、;
和$
中的任何一个,则返回true。我假设您希望正则表达式匹配不包含任何这些字符的字符串,因为您已经在[
和]
内使用了^
# 3 楼答案
您需要取出^和$,因为它们可以出现在字符串中的任何位置
String regex = "[\*,;\$]";
请注意转义$symbol的反斜杠。编辑:和*符号
# 4 楼答案
您将需要对某些字符进行转义,如[\^*;\$]