【发布时间】:2011-10-10 21:35:50
【问题描述】:
我正在查看jquery.validate plugin source code,以检查正在使用哪些表达式来检查字段的有效性,因此我可以在服务器端实现相同的功能。我进入了电子邮件的正则表达式,例如:
return this.optional(element) ||/^((([az]|\d|[!#\$%&'*+-/=\?\^_
{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_{\|}~]|[\u00A0- \uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+))|((\x22)((((\x20|\x09)(\x0d\x0a))?(\ x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0 -\uFFEF]))))(((\x20|\x09)(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@( (([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0 -\uFFEF])([az]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az ]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0- \uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).?$/i.test(value);
我猜,粗体部分是表达式,但它在 .NET 中不起作用(它一直说电子邮件错误)我猜这是因为 javascript 编码的字符。有没有一种简单的方法可以用来翻译表达式?
谢谢。
【问题讨论】:
-
是否需要使用正则表达式进行电子邮件验证?一种选择是尝试创建邮件地址:
try { new MailAddress(input); return true; } catch(FormatException) { return false; }。 -
是的,这是一个要求。所以我们可以在客户端和服务器中使用相同的验证。
标签: javascript asp.net-mvc regex asp.net-mvc-3