簡體   English   中英

正則表達式,用於檢查允許的字符在Java中不起作用

[英]Regular expression to check allowed characters not working in Java

我有以下方法來檢查允許的字符:

private boolean checkIfAllCharsAreValid(String test) {
    boolean valid = false;
    if (test.matches("^[a-zA-Z0-9,.;:-_'\\s]+$")) {
        valid = true;
    }
    return valid;
}

但是如果test有字符-在匹配中返回false。 我必須逃避-

[ ... ]里面-符號是專門處理的。 (你在表達式的開頭用你的az這個特殊目的自己使用它。)

你需要逃避-角色

[a-zA-Z0-9,.;:\-_'\s]
              ^

或者把它放在[...]表達式中的最后(或第一個)

[a-zA-Z0-9,.;:_'\s-]
                   ^

進一步說明:

  • 從技術上講,所有字符在空字符串中都有效,所以我會在表達式中從+更改為*

  • String.matches檢查完整的字符串,因此^$是多余的。

  • 你的整個方法可以被視為

     return test.matches("[a-zA-Z0-9,.;:_'\\\\s-]*"); 

A -在兩側包圍的字符類中是用於表示范圍的正則表達式元字符。

要列出一個文字-在char類中,你在char類中轉義-

if (test.matches("^[a-zA-Z0-9,.;:\\-_'\\s]+$")) 
                                 ^^^ 

或者把-放在char類的末尾:

if (test.matches("^[a-zA-Z0-9,.;:_'\\s-]+$")) 
                                      ^

或者把-放在char類的開頭:

if (test.matches("^[-a-zA-Z0-9,.;:_'\\s]+$")) 
                    ^

您可以將-放在字符組的開頭,以便它不會被解釋為字符范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM