郵箱的格式為@,其中:
?。河勺帜负蛿?shù)字組成的序列,每兩個字符中間可以有’.’、’-‘或’_’。有效例子:“marry_green”、“m003”、“k.linda”、“k-linda”、“123”。無效例子:"-123"、"…"、"_linda"。
?。河芍辽賰蓚€單詞組成的序列,每個單詞之間要用’.‘分隔。沒有單詞是由字母組成的序列且每兩個字母之間可以用’-'連接。有效例子:“qq.com”、“jlu-uni.com”、“jlu.edu.cn”。無效例子:“mail”、".com"、“invalid-”。
1.匹配
由的要求可知,第一個字符必須為字母或者數(shù)字因此為:([a-z]|[0-9])+。
再分析要求可得出,從首字符開始往后,每個字符與前一個字符之間可以連接一個’.’、’-‘或’_’。經(jīng)由分析可得:((\.|\-|_)?([a-z]|[0-9])+)*。
即,部分的正則表達(dá)式為:([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*。
2.匹配
部分可拆分為單詞+(.+單詞) 兩部分。而單詞可拆分為字母+(-)(可選)+字母 ,因此:[a-z]+(\-?[a-z]+)*。
即,部分的正則表達(dá)式為:[a-z]+(\-?[a-z]+)*(\.[a-z]+(\-?[a-z]+)*)+。
總結(jié):([a-z]|[0-9])+((\.|\-|_)?([a-z]|[0-9])+)*@[a-z]+(\-?[a-z]+)*(\.[a-z]+(\-?[a-z]+)*)+。
示例C#代碼:
運(yùn)行結(jié)果: