有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓上带正则表达式的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。 谁能告诉我有什么问题吗


共 (4) 个答案

  1. # 1 楼答案

    试试这个正则表达式[^\\*;\\$]*.*和$是正则表达式中的特殊字符

    编辑:如果您使用的是Pattern,那么应该使用这个正则表达式:String regex = "^[^\\*;\\$]*$",因为您希望匹配整个字符串

    作为一种替代方法,您可以在不需要第一个^和最后一个$的地方使用url.matches("[^\\*;\\$]*");,因为该方法无论如何都会尝试匹配整个字符串

  2. # 2 楼答案

    尝试对正则表达式使用[^*;$]*。如果字符串不包含*;$中的任何一个,则返回true。我假设您希望正则表达式匹配包含任何这些字符的字符串,因为您已经在[]内使用了^

  3. # 3 楼答案

    您需要取出^和$,因为它们可以出现在字符串中的任何位置

    String regex = "[\*,;\$]";

    请注意转义$symbol的反斜杠。编辑:和*符号

  4. # 4 楼答案

    您将需要对某些字符进行转义,如[\^*;\$]