多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我不是在问完整的电子邮件验证.
我只是想知道电子邮件地址中允许的字符user-name和server部分内容.这可能过于简单,也许电子邮件地址可以采取其他形式,但我不在乎.我只询问这个简单的形式:( user-name@server例如wild.wezyr@best-server-ever.com)和两个部分允许的字符.
我已经尝试找到一个完整的模式列表,用于通过各种类型的HTML5表单验证验证输入,特别url是email,tel等等,但我找不到任何模式.目前,这些输入验证的内置版本远非完美(tel甚至不检查您输入的内容是否是电话号码).所以我想知道,我可以使用哪些模式来验证用户是否在输入中输入了正确的格式?
以下是一些默认验证允许不允许输入的情况示例:
type="email"此字段允许在@之后具有不正确域的电子邮件,并且它允许地址以短划线或句点开始或结束,这也是不允许的.所以,.example-@x是允许的.
type="url"此输入基本上允许以http://(Chrome)开头的任何输入,后跟除了一些特殊字符之外的任何内容,例如在URL(\,@,#,〜等)中具有功能的特殊字符.在FF中,所有检查的是它是否以http:,除了之后的任何其他内容:(即使只是http:在FF中允许).IE与FF相同,只是它不允许http::.
例如:http://.允许所有三个.等等http://,.
type="tel"目前在任何主流浏览器中都没有针对电话号码的内置验证(type="text"除了告诉移动浏览器要显示哪种类型的键盘之外,其功能与100%相同).
因此,由于浏览器在每种情况下都没有显示一致的行为,并且由于它们显示的行为是非常基本的,有很多误报,我可以做些什么来验证我的HTML表单(仍然使用HTML5输入验证)?
PS:我发布这个是因为我觉得自己有一个完整的表单验证模式列表很有用,所以我认为它也可能对其他人有用(当然其他人也可以发布他们的解决方案).
我想解决这个问题:Angular 5 - 模板驱动的形式
输入字段具有类型电子邮件.例:
<input type="email" [(ngModel)]="model.email" #email="ngModel" email />
Run Code Online (Sandbox Code Playgroud)
我想验证这个字段.但它不应该是必填字段.如果验证不为空,则应仅启动验证.如果该字段为空,则可以使用.否则,在电子邮件地址正确之前,应显示错误消息.
这不是真正的工作:
*ngIf="email.untouched && email.invalid"
Run Code Online (Sandbox Code Playgroud)
那么,我该如何验证电子邮件字段?我想念"不空"这样的状态.
任何提示?
是否可以要求一个“.” 之后 ”@”?
验证required仅强制电子邮件在“@”之后包含一些内容,但我想需要一个“.”。让用户输入“.com/.org/etc”
http://jsfiddle.net/X6Uuc/333/
