我需要验证用户的屏幕名称,以确保它不能多个连字符或下划线我不希望人们的屏幕名称都是标点符号。
这是我到目前为止的验证:
public boolean validateScreenName(String screenName) {
// Check screen name has > 0 chars and that it contains only a-z, A-Z, _ and -
boolean validated = false;
if (screenName.matches("[a-zA-Z0-9_-]{1,20}")
&& (! screenName.equals(""))
&& (! screenName.contains("\\s"))) {
validated = true;
} else {
validated = false;
}
return validated;
}
我想添加no-multiple-hyphen / underscore验证作为另一个if条件可能是RegEx的形式?
答案 0 :(得分:3)
您可以使用:
screenName.matches("^(?=[^_-]*[_-]?[^_-]*$)[a-zA-Z0-9_-]{1,20}$")
不需要其他条件,它们是多余的。
答案 1 :(得分:0)
因为你已经有效了。您可以在另一个if条件中添加此检查。
screenName.matches("[^-]*-?[^-]*")