微软的帮助里有这个例子:
用于判断邮件地址是否正确:
return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$").ToString();很多地方理解不了,例如:
为什么要加'-\.'
(\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)这句又是什么意思?
请理解的朋友解释一下好吗?可否教我读写正则表达式时的一些窍门?万分感谢!!
用于判断邮件地址是否正确:
return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$").ToString();很多地方理解不了,例如:
为什么要加'-\.'
(\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)这句又是什么意思?
请理解的朋友解释一下好吗?可否教我读写正则表达式时的一些窍门?万分感谢!!
http://www.aspxboy.com/19/category.aspx
([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
分解,用伪代码表示为:string a = ([\w-\.]+)@string b = [0-9]{1,3}\.string c = (\[ b b b)string d = ([\w-]+\.)string e = ( d +);string f = (c | e)string g = [a-zA-Z]{2,4}string h = [0-9]{1,3}string i = (g|h)string j = (\]?)所以上面的那个正则表达式就与f(g|h)i等价
接下来,我们只要将从a到j每一个很小的正则表达式分析清楚了,整个大的正则表达式也就明白了
a: ([\w-\.]+)@表示至少有一个单词字符或者一个中划线-,或者一个点.后面有一个@符号
b: 表示1到3个数字后面有一个点.
c: c是3个b的组合前面加一个[
d: 和a相似,只比a少一个@符号
e: 是表示至少有一个满足d的字符或者字符串
f: 是表示有一个满足c的字符串或者有一个满足e的字符串
g: 表示有2到4个小写字母或者大写字母
h: 表示有1到3个数字
i: 表示有一个满足g或者h的字符串
j: 表示有0或者一个]
用这个表达式的时候应该设置Ecma选项,否则可能匹配错误的结果(含中文等Unicode字符的结果)