繁体   English   中英

正则表达式允许使用Java中的特定特殊字符

[英]Regular Expression allows specific special characters in java

我需要知道包含字母数字字符,@,下划线(_),句号(。)且没有任何空格的字符串的正则表达式。 并且也适用于字母数字字符,并且允许空格。 我尝试过这个正则表达式,

^[_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-]+$

在两个字符之间表示一个范围。

编辑:您还需要一个+修饰符来匹配字符类中的一个或多个字符。

我假设您正在通过EditText小部件获得此输入。 因此,可以在XML文件的布局内添加以下属性,以使其仅接收指定的字符。

android:digits="abcdefghijklmnopqrstuvwxyz0123456789,.-@_"

请注意,它将不允许使用任何大写字母。

只需添加您希望用户能够输入的任何数字/键即可。 如果您担心任何字符的模式出现次数 ,那么您甚至不需要任何正则表达式

希望能帮助到你

尝试

"[\\w@\\.]+" //for alphanumeric, @, .

"[\\w\\s]+" //for alphanumeric, spaces

如果需要匹配整个单词,请添加^和$。

PS:对于测试regexp,我始终使用RegexPlanet (而不是垃圾邮件:P)

希望能帮助到你。

您只缺少一个量词 在表达式^[_A-Za-z0-9.@-]$字符类 [_A-Za-z0-9.@-]与该类中的一个字符完全匹配。 要允许重复的字符,您需要定义一个数量词

* {0,}缩写{0,}匹配0个或多个字符(==>这允许空字符串!)

+ {1,}缩写{1,}匹配1个或更多字符

{n,m}匹配最小n字符和最大m字符。

所以你的正则表达式看起来像

^[_A-Za-z0-9.@-]+$

如果您需要1个或多个字符,或者

^[_A-Za-z0-9.@-]{6,20}$

如果您想要至少6个字符且最多20个字符。

其他事情:

  • 您可以用\\w替换_A-Za-z0-9 ,但是请注意, \\w是基于Unicode的,并且包含所有语言的所有字母和数字。

  • A-Za-z仅是ASCII,也许您想看看Unicode属性 使用\\p{L}可以匹配任何语言的字母。

在字符类的末尾缺少加号(意味着一个或多个), 并且可以大大简化:

^[\\w.@]+$

字符类中的字符失去了特殊的含义,因此除了方括号和其他几个字符外,不需要转义。


仅对于字母数字和空格,即字母,数字和空格的组合:

^[a-zA-Z0-9 ]+$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM