如何在 commnet 中验证电子邮件地址和网站

How to validate email address and website in commnet

我想在评论框中验证电子邮件地址和网站。当有人在评论框中写评论并在提交后检查评论中找到的电子邮件地址或网站是否删除该电子邮件和地址。

我已经在邮件正则表达式下面添加了。

"/(?:[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/"

上面的表达式验证了电子邮件地址,但我想验证像 email[at]email[dot]com, email{at}email{dot}com,电子邮件(在)电子邮件(点)com

我在下面的表达式中使用的网站验证相同

"/((((http|https|ftp|ftps)\:\/\/)|www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/"

但我想验证像 website[dot]com、www[dot]website[dot]com[= 这样的网站31=]

基本上你需要做的是,在电子邮件中验证 @. 字符或在 weburl 中验证 .,你需要增强你的正则表达式并把@ 字符的替代方法如您所料。所以,

@ should be written as (?:@|[[({]at[\]})])

并且,

\. should be written as (?:\.|[[{(]dot[\]})])

无论您将它们放在正则表达式中的什么位置,它也会过滤这些字符串。

这是修改后的电子邮件正则表达式。

(?:[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")(?:@|[[({]at[\]})])(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.|[[{(]dot[\]})]))+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Regex Demo for email

您可以用同样的方法从您的网站正则表达式中替换 .,您修改后的正则表达式将变成这样,

(?:(?:(?:http|https|ftp|ftps)\:\/\/)|www(?:\.|[[{(]dot[\]})]))(?:[a-zA-Z0-9.-]|[[{(]dot[\]})])+(?:\.|[[{(]dot[\]})])[a-zA-Z]{2,4}(\/\S*)?

Regex Demo for web url

现在除了匹配 [dot]{dot}(dot) 之外,正则表达式还将匹配 [dot} 和类似的字符串,并且当您尝试进一步检测此类字符串时,因此匹配这些字符串将是一个额外的优势,而不是一个问题,除非上下文另有说明。