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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

咋样判断某字符串是否为一个合法的邮箱地址呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

倒序浏览
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
* 获取文本文件中的所有邮箱
*
* 参照正则表达式的获取功能来实现。
*
*
*/
public class GetMail {
        public static void main(String[] args) throws IOException {
                // 邮箱的规则
                String regex = "\\w+@\\w+(\\.\\w+)+";

                // 读取文本文件
                BufferedReader br = new BufferedReader(new FileReader("mail.txt"));
                String line = null;
                while ((line = br.readLine()) != null) {
                        Pattern p = Pattern.compile(regex);
                        Matcher m = p.matcher(line);
                        while (m.find()) {
                                System.out.println(m.group());
                        }
                }
        }
}

// 判断邮箱是否满足条件
// indexOf('@')!=-1
// String email = "xixi@sina.com.cn";
/*
* abc@qq.com bcd@126.com ha1234ha@163.com xixi@sina.com.cn
*/
// 邮箱的规则
// String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+";
/*
* String regex = "\\w+@\\w+(\\.\\w+)+";
* System.out.println(email.matches(regex));
*/

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王晨 于 2012-12-24 12:36 编辑
  1. private void btnConfirm_Click(object sender, System.EventArgs e)
  2. {
  3.        string pattern = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";//规定格式
  4.        string strEmail = TextBox1.Text.Trim();//用户输入的邮箱
  5.        if( System.Text.RegularExpressions.Regex.IsMatch(strEmail ,pattern) )//判断是否匹配
  6.       {
  7.              Label1.Text = "格式正确";
  8.       }
  9.     else
  10.      {
  11.              Label1.Text = " 格式不正确!";
  12.      }
  13. }
复制代码
这个我记得可以用,也是以前做课程设计时借鉴别人的,你试试吧!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
用正则表达式的,楼上的可以借鉴,网上一查,也很多的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你可以看下这个地方的邮箱验证正则,http://www.cnblogs.com/ningmengcha/archive/2012/12/20/2826451.html
回复 使用道具 举报
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;

  6. namespace test3
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Console.WriteLine("请输入E-mail地址:");
  13.             string strmail = Console.ReadLine();
  14.             Console.WriteLine(IsEmail(strmail));
  15.             Console.ReadKey();
  16.         }
  17.         public static bool IsEmail(string strmail)
  18.         {
  19.             return Regex.IsMatch(strmail, "[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+");
  20.         }
  21.     }
  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
使用正则表达式或字符串函数,很好实现的。下面是我的简单实现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sjdcskjjk
{
    class Program
    {//判断一个字符串是否是合法的Email地址。一个Email地址的特征就是以一个字符序列开始,
     //后边跟着“@”符号,后边又是一个字符序列,后边跟着符号“.”,最后是字符序列。

        
        static void Main(string[] args)
        {
            Console.WriteLine("这里不采用正则,而是用字符串处理.");
            Console.WriteLine("我的理解是题目中的字符序列,是不包括例如‘.’这种特殊字符的。而是字母和数字和下划线的组合。");
            Console.WriteLine("请输入一个Email:");
            string email = Console.ReadLine();//让用户输入一句话,并赋值给email.

            int count=0;//记录@和.的数目
            foreach(char ch in email)
            {
                if(ch=='@'||ch=='.')
                    count++;
            }
            int index_at = email.IndexOf("@");//记录@所在的位置
            int index_point = email.IndexOf(".");//记录.所在的位置
            if (email.Length < 6||count!=2)
            {
                Console.WriteLine("Email不合法!");
                Console.ReadKey();
                return;
                //"@"后是域名或IP,不少于四个字符 ,所以如果Email地址的长度小于6,肯定是非法的
                //本题,合法的Email只能有一个‘@’和‘.’,故两个字母在Email的个数必须为2,否则就不合法。
            }
            //如果address字符串中存在"@"和".",并且"@"不在第一位也不在倒数四位之内、
            //"@"往后一位不是".","."也不在倒数两位之内,返回真,否则返回假
            if (0 < index_at && index_at < email.Length - 4 && index_at + 1 < index_point && index_point < email.Length - 2)
            {
                Console.WriteLine("Email合法!");
                Console.ReadKey();
               
            }
            else
            {
                Console.WriteLine("Email不合法!");
                Console.ReadKey();
            }


        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
黄晓波 黑马帝 2012-12-24 16:04:08
8#
使用正则表达式
回复 使用道具 举报
使用正则表达式就可以很方便的根据邮箱的规则检查输入的地址是否有效.
上面的自己写的,没写备注,都是最简单的语句,就调用了一个方法,利用正则表达式判断.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马