黑马程序员技术交流社区

标题: 正则表达式怎样实现检测邮箱格式? [打印本页]

作者: 张小明    时间: 2011-7-23 23:22
标题: 正则表达式怎样实现检测邮箱格式?
今天看了点关于正则表达式的知识,自己试验了一把,有点疑问,如果用正则表达式来检测邮箱的格式,邮箱要以字母开头,包括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 编辑 ]
作者: 匿名    时间: 2011-7-23 23:36
/^(([\_\w]+)\.?)+@(([\_\w]+)\.?)+\.[a-zA-Z]{2,4}$/
作者: 匿名    时间: 2011-7-23 23:42
\\p{Alpha}\\w{2,15}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}

这些题,百度一大把。各式各样的,分呀分~~都是积分惹的祸。无奈....
作者: 匿名    时间: 2011-7-23 23:43
第一个“_”不应该是下划,打错了。第一个w是大写。第二个下划线去掉…俺用手机偷懒,悲剧了,
作者: 匿名    时间: 2011-7-23 23:45
转个不用正则表达式的.[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-24 00:19
Pattern p = Pattern.compile("[\\w]+@[\\w]+\\.[\\w]+");
作者: 詹季春    时间: 2011-7-24 09:22
[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 编辑 ]
作者: 匿名    时间: 2011-7-24 15:23
[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]
作者: 赵倩倩    时间: 2012-6-13 17:21
  String mail="abc1244@sina.com";
          String reg="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//精确的匹配
        //有个不精确匹配  \\w+@w+(\\.\\w+)+
这个是我的代码 两个一个精确一个不精确的     这些都是基本啊 写个邮箱 看正则表达式的JDK自己对着 写就行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2