一个邮件系统需要下面的规则:Username: Begin with (a-zA-Z0-9_\-\.’)Contain (a-zA-Z0-9_\-\.’)Can’t have two adjacent periods
Domain:Begin and end with (a-zA-Z0-9)Contain (a-zA-Z0-9_\-\.)Can’t have two adjacent periods
我写的规则如下:internal static readonly Regex regEmail = new Regex(@"^(\.|(\.?[a-zA-Z0-9_''''\-]+\.?)+)@[a-zA-Z0-9]([a-zA-Z0-9_\-]*\.?[a-zA-Z0-9_\-]+)*\.([a-zA-Z0-9_\-]+\.?[a-zA-Z0-9_\-]*)*[a-zA-Z0-9]$" , RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.CultureInvariant);
为了简化问题,对于username:我们假设它包含(\w)和(.),对于domain:,我们假设开头和结尾是(a),中间是(\w)和(.)。 我的写法是:@"^(([\w]+\.?)+|(\.([\w]+\.?)*))@[a]([\w]*\.?[\w]+)*\.([\w]+\.?[\w]*)*[a]$"
我没有用\w代替[a-zA-Z0-9_],是因为我没有选择RegexOptions.ECMAScript。另外,在MSDN中对RegexOptions.ECMAScript的描述如下:“指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCase 和 Multiline 标志一起使用。将 ECMAScript 同任何其他标志一起使用将导致异常。”但是它可以与以下options连用,但并没有导致异常:RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ECMAScript
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18