A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张yy 中级黑马   /  2013-7-16 03:00  /  935 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张yy 于 2013-7-16 18:32 编辑

通常在注册账号的时候会先行判断邮箱格式的合法性于是试着写了个简单的判断
例如:

  1. public class Judge {

  2.         /**
  3.          * @param args
  4.          */
  5.         
  6.         public static boolean IsEmail(String str){
  7.                
  8.                 //定义要匹配的E_mail地址的正则表达式
  9.                 String regex = "\\w+@\\w+(\\.\\w{1})*\\.com";
  10.                 return str.matches(regex);
  11.                
  12.         }
  13.         
  14.         public static void main(String[] args) {
  15.                
  16.                 String str1 = "aaa@";

  17.                 String str2 = "aaaaaaa@qq.com";

  18.                 String str3 = "1111@1111tongfu.com";
  19.                
  20.                 String str4 = "123456@qq.com";
  21.                
  22.                 String str5 = "ABCDE@guiEdu.cn";
  23.                
  24.                 System.out.println(str1 + " 的合法性::" + IsEmail(str1));
  25.                
  26.                 System.out.println(str2 + " 的合法性::" + IsEmail(str2));
  27.                
  28.                 System.out.println(str3 + " 的合法性::" + IsEmail(str3));
  29.                
  30.                 System.out.println(str4 + " 的合法性::" + IsEmail(str4));
  31.                
  32.                 System.out.println(str5 + " 的合法性::" + IsEmail(str5));
  33.                                 

  34.         }

  35. }
复制代码
执行结果为:

aaa@ 的合法性::false
aaaaaaa@qq.com 的合法性::true
1111@1111tongfu.com 的合法性::true
123456@qq.com 的合法性::true
ABCDE@guiEdu.cn 的合法性::false


分析:通常情况下,E-mail的格式为“X@X.com”,字母X表示任意的一个或多个字符,@为E-mail地址中的特有符号,@后面跟上一个或者多个字符,之后是字符“.com”或者“.cn”。
所以我简单地把判断的格式定义为String regex = "\\w+@\\w+(\\.\\w{1})*\\.com"; 不过这样一来就不知道要怎样去兼顾“.cn”的结尾。
请教下要如何书写判断的语句才能最完全地判断邮箱的格式(请附带上表达式的具体解析过程),谢谢。

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

2 个回复

倒序浏览
学习学习!
回复 使用道具 举报
合法E-mail地址: 1. 必须包含一个并且只有一个符号“@” 2. 第一个字符不得是“@”或者“.” 3. 不允许出现“@.”或者.@ 4. 结尾不得是字符“@”或者“.” 5. 允许“@”前的字符中出现“+” 6. 不允许“+”在最前面,或者“+@” 正则表达式如下: ----------------------------------------------------------------------- ^(\w+((-\w+)|(\.\w+))*)\+\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$ ----------------------------------------------------------------------- 字符描述: ^ :匹配输入的开始位置。 \:将下一个字符标记为特殊字符或字面值。 * :匹配前一个字符零次或几次。 + :匹配前一个字符一次或多次。 (pattern) 与模式匹配并记住匹配。 x|y:匹配 x 或 y。 [a-z] :表示某个范围内的字符。与指定区间内的任何字符匹配。 \w :与任何单词字符匹配,包括下划线。 $ :匹配输入的结尾。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马