匹配邮箱的正则表达式

邮箱的格式为<user>@<host>,其中:

  • <user>:由字母和数字组成的序列,每两个字符中间可以有’.’、’-‘或’_’。有效例子:“marry_green”、“m003”、“k.linda”、“k-linda”、“123”。无效例子:"-123"、"…"、"_linda"。
  • <host>:由至少两个单词组成的序列,每个单词之间要用’.‘分隔。没有单词是由字母组成的序列且每两个字母之间可以用’-'连接。有效例子:“qq.com”、“jlu-uni.com”、“jlu.edu.cn”。无效例子:“mail”、".com"、“invalid-”。

1.匹配<user>
由<user>的要求可知,第一个字符必须为字母或者数字因此为:([a-z]|[0-9])+
再分析要求可得出,从首字符开始往后,每个字符与前一个字符之间可以连接一个’.’、’-‘或’_’。经由分析可得:((\.|\-|_)?([a-z]|[0-9])+)*

即,<user>部分的正则表达式为:([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*

2.匹配<host>
<host>部分可拆分为单词+(.+单词) 两部分。
而单词可拆分为字母+(-)(可选)+字母 ,因此:[a-z]+(\-?[a-z]+)*

即,<host>部分的正则表达式为:[a-z]+(\-?[a-z]+)*(\.[a-z]+(\-?[a-z]+)*)+

总结:([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*@[a-z]+(\-?[a-z]+)*(\.[a-z]+(\-?[a-z]+)*)+


示例C#代码:

namespace Pro
{
    class Program
    {
        static void Main(string[] args)
        {
            string text;
            string user = @"([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*";
            string host = @"[a-z]+(\-?[a-z]+)*(\.[a-z]+(\-?[a-z]+)*)+";
            string pattern = user + "@" + host;
            Regex regex = new Regex(pattern);
            Console.WriteLine("Please input the given text: ");
            text = Console.ReadLine();
            MatchCollection matches = regex.Matches(text);
            Console.WriteLine("\r\nOutput:");
            foreach (Match m in matches)
                Console.WriteLine(m.Groups[0]);
            Console.ReadKey();
        }
    }
}


运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值