簡體   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