java - 正则表达式允许 java 中的特定特殊字符

标签 java android regex

我需要知道包含字母数字字符、@、下划线 (_)、句号 (.) 而不是任何空格的字符串的正则表达式。并且对于字母数字字符也允许空格。我试过这个正则表达式,

^[_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/

相关文章:

java - ListActivity - 列表未显示

java - 在 Documentum 6.5 中,即使文档是模板,我的 TBO 也会被触发

android - 如何将第一个画廊项目向左对齐?

java.io.IOException : Error running exec() Working Directory: null Environment: null

java - 使用 Apache POI 和 Java 比较一张纸中的数据并在同一工作簿中的另一张纸上书写

Java 集合 : IF the key of Hashmap is Immutable Object then do we need to override hashcode and equals?

Android 资源 - 用于存储国家名称/国家代码的数组

python 正则表达式在两个字符串之间进行匹配

java - 使用 Java 模式的字符串定界符

.net - 限制数字字符数的正则表达式是什么?