繁体   English   中英

电子邮件验证RegEx用户名/本地名称长度检查未运行

[英]Email Validation RegEx username/local name length check not running

我已经调试了几个小时,并且碰壁了-regex从来不是我的强项。 我已经能够更改以下正则表达式,以限制255个字符的域罚款,但是,在尝试限制电子邮件地址的本地/用户名部分时,我遇到了实现64个字符限制的问题。 我经历了regex101替换+ s和* s并试图了解每次通过的情况-但是,即使我添加了对所有非空白字符的限制为64的检查,看起来其他检查还是通过了优先级-尽管我不确定。 下面是我的正则表达式,目前没有我使用过的64个字符检查中的任何一个:

 var emailCheck = new RegExp(/^((([az]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.{0,1}([az]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([az]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([az]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([az]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯]){1,255}([az]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([az]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([az]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([az]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯]){1,255}([az]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.*$/i); 

到目前为止,我的内容可以在http://jsfiddle.net/mtqx0tz1/上看到,我进行了其他一些细微改动(例如,不允许连续的点),但是在大多数情况下,此正则表达式来自另一个没有字符限制的堆栈帖子。

最后,我知道这不是“标准”,可以这么说,并且电子邮件是在服务器端进行检查的,但是,我希望比后悔更安全...以及在我的某些正则表达式上工作。 很抱歉,如果这个问题不值得发表,我只是简单地看不到我的通行证{1,64}中的哪个地方失败了。 在这一点上,我正在考虑仅将字符串的一部分细分为@符号并以这种方式检查长度...但是最好将其包含在此语句中,因为所有检查都在这里开始用。

我已经使用过此正则表达式验证,并且效果很好。 电子邮件地址在变量strIn中

try
            {
                return Regex.IsMatch(strIn,
                      @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
                      @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$",
                      RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
            }
            catch (RegexMatchTimeoutException)
            {
                return false;
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM