使用正则表达式将符号添加到字母数字检查

时间:2016-01-15 17:51:53

标签: java regex

我使用此代码检查字符串是否包含非字母数字字符:

private boolean checkNonAlphanumeric(String text) {
    Pattern p = Pattern.compile("[^a-zA-Z0-9]");
    return p.matcher(text).find();
}

这很好用。但现在我需要检查这个添加一些符号。在这种情况下" - "。在这种情况下我应该使用什么模式?

ABCabc-ABC1234 =应该没问题。 a!#$%#=应该是错误的。

谢谢!

2 个答案:

答案 0 :(得分:1)

仅限字母数字,-使用此字号:

private boolean checkNonAlphanumeric(String text) {
    Pattern p = Pattern.compile("[a-zA-Z0-9-]*");
    return p.matcher(text).find();
}

答案 1 :(得分:1)

您可以使用:

private boolean checkNonAlphanumeric(String text) {
    Pattern p = Pattern.compile("[^a-zA-Z0-9\\-]");
    return p.matcher(text).find();
}

我建议添加双斜杠,以确保如果将来更改正则表达式, - 将继续以正确的方式解释。

如果您只使用 - 然后您决定在 - 之前或之后添加其他字符,它将无效。例如:

private boolean checkNonAlphanumeric(String text) {
    Pattern p = Pattern.compile("[^a-zA-Z0-9<->]");
    return p.matcher(text).find();
}

与 - 不匹配,但以下代码将起作用:

private boolean checkNonAlphanumeric(String text) {
    Pattern p = Pattern.compile("[^a-zA-Z0-9<\\->]");
    return p.matcher(text).find();
}