android中的regex的firstname和lastname验证器

时间:2016-01-03 03:16:46

标签: java regex validation

我有一个问题是通过此正则表达式验证名称:

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*$

1 个答案:

答案 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*$]+";

然后你可以编译它。这是您需要的正则表达式。