我需要知道包含字母数字字符、@、下划线 (_)、句号 (.) 而不是任何空格的字符串的正则表达式。并且对于字母数字字符也允许空格。我试过这个正则表达式,
^[_A-Za-z0-9-\\.\\@]$ and ^[A-Za-z0-9-\\s]$
代码:
private static final String Username_REGEX ="^[_A-Za-z0-9.@-]$";
public static boolean isUsername(EditText editText, boolean required) {
return isValid(editText, Username_REGEX,Username_MSG, required);
}
public static boolean isValid(EditText editText, String regex, String errMsg, boolean required) {
String text = editText.getText().toString().trim();
editText.setError(null);
if ( required && !hasTextemt(editText) ) return false;
if (required && !Pattern.matches(regex, text)) {
editText.setError(errMsg);
return false;
};
return true;
}
public static boolean hasTextemt(EditText editText) {
String text = editText.getText().toString().trim();
editText.setError(null);
if (text.length() == 0) {
editText.setError(emt);
return false;
}
return true;
}
这是正确的吗?我没有得到正确的结果。谁能指导我?
最佳答案
移动字符类末尾的破折号-
:
^[_A-Za-z0-9.@-]+$
和
^[A-Za-z0-9\\s-]+$
两个字符之间表示一个范围。
编辑:您还需要一个 +
修饰符来匹配字符类中的一个或多个字符。
关于java - 正则表达式允许 java 中的特定特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477682/