簡體   English   中英

匹配正則表達式不匹配模式

[英]Matcher regex not matching pattern

我創建了一個方法,希望在設置的字符串中找到@ gmail.com,並通過測試傳遞例如stackoverflow@gmail.com,該方法返回false。

我已經搜索過,但是我不確定我缺少什么,因為我正在使用.matches()是否需要matchs.find()?

public final static boolean isGmail(String s) {

    Pattern pattern = Pattern.compile("(\\W|^)[\\w.+\\-]*@gmail.com(\\W|$)");
    System.out.println(pattern + "            pp  ");
    Matcher m = pattern.matcher(s);
    System.out.println(m + "            pp  ");
    boolean b = m.matches();
    System.out.println(b + "            pp  ");
    return b;
}

}

正則表達式我很陌生,所以這可能是我接受的問題。

如果要在字符串中查找“ @ gmail.com”,則應使用find()方法來實現正確的行為。

match()和find()之間的區別在於,match()方法嘗試將測試字符串的整個區域與模式進行匹配,而find()嘗試查找與模式匹配的測試字符串的下一個子序列 (請參閱https ://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html )。 希望能幫助到你。

您需要的正則表達式是:

[A-Z0-9._%+-]+@gmail\.com

public final static boolean isGmail(String s) {
    return s.matches("(?i).*?[A-Z0-9._%+-]+@gmail\\.com.*");
}

您不需要為此使用正則表達式,只需執行

public final static boolean isGmail(String s) {
    return s.indexOf("@gmail.com") > -1;
}

暫無
暫無

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

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