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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张小明 黑马帝   /  2011-7-23 23:22  /  4906 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看了点关于正则表达式的知识,自己试验了一把,有点疑问,如果用正则表达式来检测邮箱的格式,邮箱要以字母开头,包括6~18个字符,包括字母、数字、下划线,要怎么定义规则呢?如下面简单的测试代码,要怎么定义regex呢?
  1. import java.io.*;
  2. class  CheckEmailDemo{
  3.        public static void main(String args[]) {
  4.        CheckEmail();
  5.        }
  6.        public static void CheckEmail()
  7.        {
  8.                        String emailName = null;
  9.                        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  10.                        System.out.print("请输入邮箱号:");
  11.                        try{
  12.                        emailName = br.readLine();
  13.                }catch(Exception e){}
  14.                              String regex = "";//此处要怎么写呢?
  15.                        boolean flag = emailName.matches(regex);
  16.                        if(flag)
  17.                                System.out.println("邮箱地址"+emailName+"格式是正确的。");
  18.                        else
  19.                                System.out.println("邮箱地址"+emailName+"格式是非法的。");       
  20.        }
  21. }
复制代码
因为刚接触,如果方便,最好解释一下,共同学习,吼吼~
[ 本帖最后由 张小明 于 2011-07-23  23:40 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 继续等待马友们的回答!

查看全部评分

8 个回复

正序浏览
  String mail="abc1244@sina.com";
          String reg="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//精确的匹配
        //有个不精确匹配  \\w+@w+(\\.\\w+)+
这个是我的代码 两个一个精确一个不精确的     这些都是基本啊 写个邮箱 看正则表达式的JDK自己对着 写就行
回复 使用道具 举报
黑马网友  发表于 2011-7-24 15:23:34
8#
[code=java]public ActionErrors validate(ActionMapping actionMapping,
                                 HttpServletRequest httpServletRequest) {
        String style =
                "^[a-zA-Z][a-zA-Z0-9._-]*@([a-zA-Z0-9-_]+\\.)+(com|gov|net|com\\.cn|edu\\.cn)$";
        Pattern ptt = Pattern.compile(style);
        Matcher mch=ptt.matcher(email);
        ActionErrors errors = new ActionErrors();
        if ((name == null || name.equals(""))) {
            ActionError error = new ActionError("error.name");
            errors.add("name", error);
        } else
        if (!mch.matches()) {
            ActionError error = new ActionError("error.email");
            errors.add("email", error);
        }
        return errors;
    }[/code]

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 还行!

查看全部评分

回复 使用道具 举报
詹季春 黑马帝 2011-7-24 09:22:24
7#
[code=java]//提交mail地址的文本框
var strm = document.myform.Mail.value   
//验证Mail的正则表达式,^[a-zA-Z0-9_-]:开头必须为字母,下划线,数字,
var regm = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
if (!strm.match(regm) && strm!="")
   {
     alert("邮箱地址格式错误或含有非法字符!\n请检查!");
     document.myform.Mail.select();   
     return false;
   } [/code]
[ 本帖最后由 詹季春 于 2011-07-24  09:24 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 虽不知答案是否正确,代码看起来很舒服!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 00:19:43
地板
Pattern p = Pattern.compile("[\\w]+@[\\w]+\\.[\\w]+");
回复 使用道具 举报
黑马网友  发表于 2011-7-23 23:45:20
报纸
转个不用正则表达式的.[code=jscript]import java.util.Scanner;
public class Test
{
public static void main(String args[])
{
  Scanner sc=new Scanner(System.in);
  String name=sc.next();
  if(chose(name))
  {
   System.out.println("邮箱合法");
  }
  else
  {
   System.out.println("邮箱非法");
  }
}
public  static boolean chose(String a)
{
  String c;
  String d;
  char b=a.charAt(0);
  if(a.equals(""))
  {
   return false;
  }
      if(b==' ' && b=='@' && b=='.')
  {
   return false;
  }
  c=a.substring(a.length()-4,a.length());
  if(!(c.equals(".com")))
  {
   return false;
  }
  //用判定"@."是否存在好一些
  if(!a.contains("@."))
  {
  return false;
  }
}[/code]
回复 使用道具 举报
黑马网友  发表于 2011-7-23 23:43:29
板凳
第一个“_”不应该是下划,打错了。第一个w是大写。第二个下划线去掉…俺用手机偷懒,悲剧了,
回复 使用道具 举报
黑马网友  发表于 2011-7-23 23:42:20
藤椅
\\p{Alpha}\\w{2,15}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}

这些题,百度一大把。各式各样的,分呀分~~都是积分惹的祸。无奈....

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-23 23:36:38
沙发
/^(([\_\w]+)\.?)+@(([\_\w]+)\.?)+\.[a-zA-Z]{2,4}$/

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1

查看全部评分

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