将IP地址添加到电子邮件验证RegEx

时间:2013-08-16 12:36:36

标签: asp.net regex validation

我正在使用RegEx "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+[.])*(\.[a-zA-Z]{2,17})$"来验证电子邮件,但我的主管希望根据Microsoft标准进行验证。所以我需要关注

http://msdn.microsoft.com/en-us/library/01escwtf(v=vs.100).aspx

根据标准,一切正常,但我仍然面临着

的问题

有效:js#internal@proseware.com 有效期:j_9 @ [129.126.118.1]

上述邮件ID仍然无效。我尝试使用该页面中使用的正则表达式

^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$ 

但是我在服务器页面中收到错误。虽然我在验证表达式中粘贴了表达式,但它无法接受字符。

注意:我使用ASP.Net验证器来验证电子邮件。

1 个答案:

答案 0 :(得分:1)

描述

为了匹配示例文本中的这两个电子邮件地址,我想我会像这样重写你的表达式:

[A-Z0-9._%#+-]+@(?:[A-Z0-9.-]+\.[A-Z]{2,4}|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])

enter image description here

如果您希望使用此功能验证可能只包含电子邮件的字符串,则可以添加字符串锚点^$的开头/结尾。

实施例

Live Demo

示例文字

Valid: js#internal@proseware.com Valid: j_9@[129.126.118.1]

<强>匹配

[0][0] = js#internal@proseware.com
[1][0] = j_9@[129.126.118.1]