2013-02-11 67 views
1

我想驗證一個電子郵件地址。我目前有:使用java中的正則表達式驗證特定的電子郵件

private static final String EMAIL_PATTERN = 
    "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
    + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 

這將驗證任何電子郵件,但我只想驗證公司特定的電子郵件,例如,

[email protected]

的電子郵件將始終以.com結尾的,但我想用不同的特定字符串更改公司名稱在以後的日子如能力@ anotheremail.com,@ somethingelse.com

任何人都可以幫忙的語法?

感謝

+1

如果該正則表達式驗證了您想接受的電子郵件地址,那麼它不是真正重複的,但請注意,符合RFC的電子郵件驗證可能會非常棘手,正如在此問題中回答:[使用正則表達式驗證電子郵件地址](http ://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – 2013-02-11 17:24:11

+1

與動態正則表達式驗證的主要問題是,它總是會被編譯和再次。最好有一個已編譯模式的緩存。 – 2013-02-11 17:47:49

回答

2

您可以使用此正則表達式驗證公司特定電子郵件:

private static final String coDomain = "specificemail.com"; 
private static final String EMAIL_PATTERN = 
    "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
    + Pattern.quote(coDomain) + "$"; 

後來根據需要陪域變量的值,只是改變一些其他的名字。

+0

非常感謝! – EHarpham 2013-02-11 17:46:01

0
// be careful with regex meta characters in the company name. 
public static String emailFromCompanyPatternString(String company) { 
    return "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
    + company + (\\.[A-Za-z]{2,})$"; 
} 
0

也許是這樣的:

public static Pattern getEmailValidator(String domain) { 
    return Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + domain); 
} 

public void someMethodThatNeedsToValidatEmail(String domain, String email) { 
    return getEmailValidator(domain).matches(email); 
} 

注意,這是未經測試的代碼...

0

我用這是特定結尾的域名。只需更換爲 「@ gmail.com」 你的結局域

private static final String EMAIL_REGEX1 = 
"^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@gmail.com"; 

private static final String EMAIL_REGEX1 = 
"^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@somethingelse.com"; 

訪問https://ideone.com/UUTnky爲完整的regex電子郵件驗證的Java實現。

相關問題