我有一个正则表达式来测试电子邮件模式:
([a-zA-Z]+d+b@b[a-zA-Z]+d+)
它应该测试@字符之后的数字:
john@mail2.com VALID
john2@mail.com VALID
john2@mail2.com VALID
jo2hn@mail.com VALID
john@m2.com VALID
john@mail.com INVALID
如何使此正则表达式工作?
您似乎不想匹配没有数字的字符串。
用
^(?!D*$)[da-zA-Z]+@[a-zA-Zd]+.com$
查看正则表达式演示
详
^
- 字符串的开头(?!D*$)
- 字符串不能只包含非数字字符(并且不能为空 - 否则,将*
替换为+
)[da-zA-Z]+
- 1+ 字母数字字符@
-@
[a-zA-Zd]+
- 1+ 字母数字字符.com
-.com
子字符串$
- 字符串的结尾。
此正则表达式匹配在 @ 符号之前或之后具有数字的任何字符串。
d[a-zA-Z]*@|@[a-zA-Z]*d
您没有解释目标规则。
您的意思是您需要电子邮件至少包含一个数字吗?
var rgx = /[a-zd]+(?:(?<=d.*)@|@(?=.*d))[a-zd]+.com/i;
rgx.test('john@mail2.com'); //true
rgx.test('john2@mail.com'); //true
rgx.test('john2@mail2.com'); //true
rgx.test('jo2hn@mail.com'); //true
rgx.test('john@m2.com'); //true
rgx.test('john@mail.com'); //false