匹配邮箱的正则表达式
邮箱的格式为@,其中:
:由字母和数字组成的序列,每两个字符中间可以有’.’、’-‘或’_’。有效例子:“marry_green”、“m003”、“k.linda”、“k-linda”、“123”。无效例子:"-123"、"…"、"_linda"。
:由至少两个单词组成的序列,每个单词之间要用’.‘分隔。没有单词是由字母组成的序列且每两个字母之间可以用’-'连接。有效例子:“qq.com”、“jlu-uni.com”、“jlu.edu.cn”。无效例子:“mail”、".com"、“invalid-”。
1.匹配
由的要求可知,第一个字符必须为字母或者数字因此为:([a-z]|[0-9])+。
再分析要求可得出,从首字符开始往后,每个字符与前一个字符之间可以连接一个’.’、’-‘或’_’。经由分析可得:((\.|\-|_)?([a-z]|[0-9])+)*。
即,部分的正则表达式为:([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*。
2.匹配
部分可拆分为单词+(.+单词) 两部分。而单词可拆分为字母+(-)(可选)+字母 ,因此:[a-z]+(\-?[a-z]+)*。
即,部分的正则表达式为:[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#代码:
运行结果: