我有一个问题是通过此正则表达式验证名称:
osgi-loglistener-slf4j
当我启动测试时,会抛出异常:
public static boolean validateNames(Context context, String txt) {
String regx = "():@#$%&_+\*=~^`“‘,.:;!?/\{}\[]<>0123456789*$";
Pattern pattern = Pattern.compile(regx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(txt);
return matcher.find();
}
完全在java.lang.RuntimeException: Unable to start activity
ComponentInfo{ma.altensoftwareawards.mbo/ma.altensoftwareawards.mbo.activities.SplashActivity}:
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern
near index 28:
():@#$%&_+\*=~^`“‘,.:;!?/\{}\[\]<>0123456789*$
。
答案 0 :(得分:0)
java.util.regex.PatternSyntaxException 表示您的正则表达式不正确。看起来你正在试图查看名称中是否有任何非法字符。这样做更容易:
Pattern pattern = Pattern.compile("[^a-zA-Z]");
Matcher matcher = pattern.matcher(txt);
return matcher.find();
这匹配任何非ALPHABET而不是所有乱码。
希望这有帮助!
修改: 由于OP的要求,以下是它的外观(读者,如果您对正则表达式的外观没有限制,请参阅上一节):
String regex = "[():@#$%&_+\\*=~^`“‘,.:;!?/\\{}\\[\\]<>0123456789*$]+";
然后你可以编译它。这是您需要的正则表达式。