在Android上使用正则表达式验证字符串

问题描述

| 我希望我的字符串不包含
*
;
$
。我用这个代码
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 = \"[\\*,;\\$]\";
请注意,反斜杠将$符号转义。编辑:和*符号。     ,您将需要转义一些像这样的字符[\\ ^ *; \\ $]     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...