黑马程序员技术交流社区

标题: 判断某字符串是否为一个合法的邮箱地址 [打印本页]

作者: 寥若星辰    时间: 2012-12-24 12:10
标题: 判断某字符串是否为一个合法的邮箱地址
咋样判断某字符串是否为一个合法的邮箱地址呢?
作者: 周亮    时间: 2012-12-24 12:35
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));
*/

作者: 王晨    时间: 2012-12-24 12:35
本帖最后由 王晨 于 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. }
复制代码
这个我记得可以用,也是以前做课程设计时借鉴别人的,你试试吧!
作者: 杭州-杨    时间: 2012-12-24 13:23
用正则表达式的,楼上的可以借鉴,网上一查,也很多的
作者: 梦ing    时间: 2012-12-24 14:33
你可以看下这个地方的邮箱验证正则,http://www.cnblogs.com/ningmengcha/archive/2012/12/20/2826451.html

作者: 张鹏飞    时间: 2012-12-24 15:54
  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. }
复制代码

作者: 阮佳佳    时间: 2012-12-24 16:02
使用正则表达式或字符串函数,很好实现的。下面是我的简单实现。
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();
            }


        }
    }
}

作者: 黄晓波    时间: 2012-12-24 16:04
使用正则表达式
作者: 张鹏飞    时间: 2012-12-24 16:11
使用正则表达式就可以很方便的根据邮箱的规则检查输入的地址是否有效.
上面的自己写的,没写备注,都是最简单的语句,就调用了一个方法,利用正则表达式判断.




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