我使用此代码检查字符串是否包含非字母数字字符:
private boolean checkNonAlphanumeric(String text) {
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
return p.matcher(text).find();
}
这很好用。但现在我需要检查这个添加一些符号。在这种情况下" - "。在这种情况下我应该使用什么模式?
ABCabc-ABC1234 =应该没问题。 a!#$%#=应该是错误的。
谢谢!
答案 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();
}