電子メールの正規表現パターン
^[__A-Za-z0-9-\\+]+(\\.[__A-Za-z0-9-]+)** @[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)** (\\.[A-Za-z]{2,})$;
説明
^ #start of the line [__A-Za-z0-9-\\+]+ # must start with string in the bracket[], must contains one or more (+) ( # start of group #1 \\.[__A-Za-z0-9-]+ # follow by a dot "." and string in the bracket[], must contains one or more (+) )** # end of group #1, this group is optional (** ) @ # must contains a "@" symbol [A-Za-z0-9-]+ # follow by string in the bracket[], must contains one or more (+) ( # start of group #2 - first level TLD checking \\.[A-Za-z0-9]+ # follow by a dot "." and string in the bracket[], must contains one or more (+) )** # end of group #2, this group is optional (** ) ( # start of group #3 - second level TLD checking \\.[A-Za-z]{2,} # follow by a dot "." and string in the bracket[], with minimum length of 2 ) # end of group #3 $ #end of the line
組み合わせは、電子メールアドレスは ”
A-Za-z0-9 – \\ +”で始まる必要があり、オプションで “。[
A-Za-z0-9-]”の後に “@”記号で終了する必要があります。電子メールのドメイン名は「A-Za-z0-9-」で始まり、第1レベルのTld(.com、.net)「.A-Za-z0-9」で始まり、オプションで第2レベルのTld (.com.au、.com.my) “\\。[A-Za-z]\ {2、}”、第2レベルTldはドット “。”で始まり、長さは2文字以上でなければなりません。
1. Javaの正規表現の例
正規表現を使用して電子メールアドレスを検証する方法を示すJavaの例を次に示します。
EmailValidator.java
package com.mkyong.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EmailValidator { private Pattern pattern; private Matcher matcher; 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,})$"; public EmailValidator() { pattern = Pattern.compile(EMAIL__PATTERN); } /** ** ** Validate hex with regular expression ** ** @param hex ** hex for validation ** @return true valid hex, false invalid hex ** / public boolean validate(final String hex) { matcher = pattern.matcher(hex); return matcher.matches(); } }
2.有効なメール
{空} 1。
mkyong@yahoo.com
、
mkyong-100@yahoo.com
、
mkyong.100@yahoo.com
2.
mkyong111@mkyong.com
、
mkyong-100@mkyong.net
、
mkyong.100@mkyong.com.au
3. mkyong @ 1.com、
mkyong@gmail.com.com
4. mkyong
100@gmail.com
、
mkyong-100@yahoo-test.com
3.無効なメール
{空} 1。 mkyong – .com.my – tldはドット “。”で始めることはできません+ 3. mkyong123@gmail.a – “.a”は有効なtldではなく、最後のtldにはmkyong123 @。com – tldはドット “。”で始めることはできません。 “+ 6. mkyong123 @ .com.com – tldはドット”。 “で始めることはできません。+ 6. mkyong @ mkyong.com – mkeyong()
@ gmail.com – 電子メールは文字、数字、アンダースコア、ダッシュ+8のみを許可します。mkyong@%
.com – 電子メールの最初の文字はドットで始めることはできません。 mkyong..2002 @ gmail.com – ダブルドット “。”は許可されていません+ 10。mkyong。@ gmail.com – 電子メールの最後の文字はドットで終わることはできません “” mkeyong @ mkyong @ gmail.com – ダブル「@」は許可されていません。 12です。
mkyong@gmail.com
.1a – 2文字のメールは、数字を含むことはできません
ユニットテスト
ここでは、http://testng.org[testNG]を使用した単体テストがあります。
EmailValidatorTest.java
package com.mkyong.regex; import org.testng.Assert; import org.testng.annotations.** ; /** ** ** Email validator Testing ** ** @author mkyong ** ** /public class EmailValidatorTest { private EmailValidator emailValidator; @BeforeClass public void initData() { emailValidator = new EmailValidator(); } @DataProvider public Object[][]ValidEmailProvider() { return new Object[][]{ { new String[]{ "mkyong@yahoo.com", "mkyong-100@yahoo.com", "mkyong.100@yahoo.com", "mkyong111@mkyong.com", "mkyong-100@mkyong.net", "mkyong.100@mkyong.com.au", "mkyong@1.com", "mkyong@gmail.com.com", "mkyong+100@gmail.com", "mkyong-100@yahoo-test.com" } } }; } @DataProvider public Object[][]InvalidEmailProvider() { return new Object[][]{ { new String[]{ "mkyong", "mkyong@.com.my", "mkyong123@gmail.a", "mkyong123@.com", "mkyong123@.com.com", ".mkyong@mkyong.com", "mkyong()** @gmail.com", "mkyong@%** .com", "mkyong..2002@gmail.com", "mkyong.@gmail.com", "mkyong@mkyong@gmail.com", "mkyong@gmail.com.1a" } } }; } @Test(dataProvider = "ValidEmailProvider") public void ValidEmailTest(String[]Email) { for (String temp : Email) { boolean valid = emailValidator.validate(temp); System.out.println("Email is valid : " + temp + " , " + valid); Assert.assertEquals(valid, true); } } @Test(dataProvider = "InvalidEmailProvider", dependsOnMethods = "ValidEmailTest") public void InValidEmailTest(String[]Email) { for (String temp : Email) { boolean valid = emailValidator.validate(temp); System.out.println("Email is valid : " + temp + " , " + valid); Assert.assertEquals(valid, false); } } }
ユニットテストの結果を以下に示します。
Email is valid : mkyong@yahoo.com , true Email is valid : mkyong-100@yahoo.com , true Email is valid : mkyong.100@yahoo.com , true Email is valid : mkyong111@mkyong.com , true Email is valid : mkyong-100@mkyong.net , true Email is valid : mkyong.100@mkyong.com.au , true Email is valid : mkyong@1.com , true Email is valid : mkyong@gmail.com.com , true Email is valid : mkyong+100@gmail.com , true Email is valid : mkyong-100@yahoo-test.com , true Email is valid : mkyong , false Email is valid : mkyong@.com.my , false Email is valid : mkyong123@gmail.a , false Email is valid : mkyong123@.com , false Email is valid : mkyong123@.com.com , false Email is valid : .mkyong@mkyong.com , false Email is valid : mkyong()** @gmail.com , false Email is valid : mkyong@%** .com , false Email is valid : mkyong..2002@gmail.com , false Email is valid : mkyong.@gmail.com , false Email is valid : mkyong@mkyong@gmail.com , false Email is valid : mkyong@gmail.com.1a , false PASSED: ValidEmailTest([Ljava.lang.String;@15f48262) PASSED: InValidEmailTest([Ljava.lang.String;@789934d4) =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 ===============================================
参考文献
email
リンク://tag/regex/[regex]