簡體   English   中英

正則表達式Java可選字符

[英]Regex Java optional characters

我有一個正則表達式;

("(?=.*[az]).*") ("(?=.*[0-9]).*") ("(?=.*[AZ]).*") ("(?=.*[!@#$%&*()_+=|<>?{}\\\\[\\\\]~-]).*")

該密碼將檢查密碼是否符合要求:長度= 8,然后是以下三個字符-lowerCase,upperCase,數字,特殊字符。 以上4個中的3個+長度為8。

我的工作原理是直到密碼中沒有空格,然后它才輸出錯誤的消息。 換句話說,我如何在特殊字符列表中包含空格,謝謝!

您可以嘗試以下方法:

String password = "pA55w$rd";

int counter = 0;

if(password.length() >= 8)
{
    Pattern pat = Pattern.compile(".*[a-z].*"); // Lowercase
    Matcher m = pat.matcher(password);
    if(m.find()) counter++;
    pat = Pattern.compile(".*[0-9].*"); // Digit
    m = pat.matcher(password);
    if(m.find()) counter++;
    pat = Pattern.compile(".*[A-Z].*"); // Uppercase
    m = pat.matcher(password);
    if(m.find()) counter++;
    pat = Pattern.compile(".*\\W.*"); // Special Character
    m = pat.matcher(password);
    if(m.find()) counter++;

    if(counter == 3 || counter == 4)
    {
        System.out.println("VALID PASSWORD!");
    }
    else
    {
        System.out.println("INVALID PASSWORD!");
    }
}
else
{
    System.out.println("INVALID PASSWORD!");
}

有兩種情況:要么與所需長度匹配,要么不匹配。

如果它與長度匹配,則會對這4種情況中的每一種進行一次檢查,並且每次都增加一個計數器。 由於您希望它匹配3或4種情況,因此我在此處放置了if-else情況。

暫無
暫無

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

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