我有一个正则表达式来测试emailpatterns:
([a-zA-Z]+\d+\b@\b[a-zA-Z]+\d+)
它应该测试@ char之后的数字:
john@mail2.com VALID
john2@mail.com VALID
john2@mail2.com VALID
jo2hn@mail.com VALID
john@m2.com VALID
john@mail.com INVALID
如何使这个正则表达式工作?
答案 0 :(得分:1)
您似乎不希望匹配其中没有数字的字符串。
使用
^(?!\D*$)[\da-zA-Z]+@[a-zA-Z\d]+\.com$
请参阅regex demo
<强>详情
^
- 字符串开头(?!\D*$)
- 字符串不仅可以包含非数字字符(也不能为空 - 否则,将*
替换为+
)[\da-zA-Z]+
- 1个字母数字字符@
- @
[a-zA-Z\d]+
- 1个字母数字字符\.com
- .com
子字符串$
- 字符串结束。答案 1 :(得分:0)
此正则表达式匹配@符号之前或之后具有数字的任何字符串。
\d[a-zA-Z]*@|@[a-zA-Z]*\d
答案 2 :(得分:0)
您没有解释目的地规则 你的意思是你需要电子邮件至少包含一位数字吗?
var rgx = /[a-z\d]+(?:(?<=\d.*)@|@(?=.*\d))[a-z\d]+\.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