如何获得测试数字的正则表达式?

时间:2017-12-12 00:07:10

标签: javascript regex

我有一个正则表达式来测试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

如何使这个正则表达式工作?

3 个答案:

答案 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