使用Javascript中的regex验证带有文件夹的电子邮件地址

Validate email address with folder using regex in Javascript

我正在编写一个正则表达式来验证javascript中的电子邮件地址。

1
/^[a-zA-Z]([\w-\.]{4,29})+@([\w-]+\.)+[a-zA-Z]{2,3}$/

这个很好用。但是还有一个额外的要求,比如"在gmail地址中,我们可以指定文件夹名以及邮件将发送到的电子邮件ID"。对于[email protected],邮件将被发送到[email protected]收件箱下的"office"文件夹。

那么,我如何在上面的regex中验证这一点呢?加号不是必需的,但如果添加了加号,它应该位于@符号之前的其他字符之间。


您可以简单地将+字符添加到您的字符类中,并在@之前使用否定的匹配。注意,我从点中删除了转义序列,并将连字符作为最后一个字符移动,否则您需要转义它,还实现了使用i修饰符进行不区分大小写的匹配。

1
/^[a-z]([\w.+-]{4,29})[^+]@([\w-]+\.)+[a-z]{2,3}$/i

现场演示


我在你想要的场景中尝试了这个regex,它运行良好

^([a-zA-Z0-9_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

在regex验证器中尝试它

谢谢,希望它有帮助


用这个来代替:

1
/^((([a-z]|\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)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i