在android上使用regex验证字符串

时间:2011-04-13 08:26:04

标签: java android regex

我希望我的字符串不包含*;$。我用这个代码

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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

作为替代方案,您可以使用url.matches("[^\\*;\\$]*");,而不需要第一个^和最后一个$,因为该方法会尝试匹配整个字符串。

答案 2 :(得分:0)

你需要取出^和$,因为它们可以出现在你的字符串中的任何地方。

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

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

答案 3 :(得分:0)

您需要转义一些像[\ ^ *; \ $]

这样的字符