我正在使用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验证器来验证电子邮件。
答案 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]?)\])
如果您希望使用此功能验证可能只包含电子邮件的字符串,则可以添加字符串锚点^
和$
的开头/结尾。
示例文字
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]