我正在做一个正则表达式的电子邮件验证。
这是我目前掌握的情况:
(?!^.*([._%+$-])\1+.*$)^[a-zA-Z0-9][a-zA-Z0-9._%+$-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,7}$
我已经得到了它满足所有这些要求:
1.连续的句点(注意,地址中可以出现多个句点,必须用有效字符分隔)。示例customer@yahoo.. com
1.以特殊字符开头的用户名。例如#customer@yahoo.com
1.一行中包含两个特殊字符的用户名。例如cu$$tomer@yahoo.com
1.后缀名最小长度为2。无效长度示例:客户@雅虎.c
1.后缀最大长度为7。无效长度示例:customer@yahoo.commmmmmm
但我被最后一条卡住了:
1.用户名特殊字符不能跟在句点后面。示例customer.name.#name2@yahoo.com
我尝试添加第二个负前瞻,如下所示,但无法使其正常工作。:
(?!^.*([._%+-])\1+.*$)(?!^.*(.)\2+([._%+-])$)^[a-zA-Z0-9][a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,7}$
任何帮助都非常感谢!
2条答案
按热度按时间1zmg4dgp1#
这个正则表达式应该可以完成您想要的操作
z2acfund2#
你可以试试这个:
参见:https://regex101.com/r/4IYjU9/1