如何仅匹配数字电子邮件地址

时间:2015-10-19 22:53:13

标签: javascript regex

如何只匹配数字电子邮件地址?

我正在测试以下电子邮件地址:

12345839223@gmail.com <-- want this  
38482934934@gmail.com <-- want this  
abcaasd@gmail.com     <-- don't want this  
asdasd123@gmail.com   <-- don't want this  
123asdasd@gmail.com   <-- don't want this

我尝试了以下正则表达式,但它将一些地址与字母匹配。

([0-9])+(@+)

4 个答案:

答案 0 :(得分:5)

正则表达式/^\d+(?=@)/将为您实现此目的。从下图中可以看出,它查找行的开头,后跟一个或多个数字,后跟“@”符号。

enter image description here

以下是RegEx101 test case供参考

var emails = [
  '12345839223@gmail.com',
  '38482934934@gmail.com',
  'abcaasd@gmail.com',
  'asdasd123@gmail.com',
  '123asdasd@gmail.com'
];

function emailNum(email) {
    return (/^\d+(?=@)/.exec(email)||[false])[0];
    // return the match if it exists or false
}

for(var i in emails) document.write(emails[i]+': '+emailNum(emails[i])+'<br>');

答案 1 :(得分:0)

在Javascript中,您可以使用以下函数:

function isNumberEmail(email) {
    return /^\d+@.*\./.test(email)
}

emailsToTest = ["12345839223@gmail.com",
"38482934934@gmail.com",
"abcaasd@gmail.com",
"asdasd123@gmail.com",
"123asdasd@gmail.com"]

emailsToTest.forEach(function(email) {
  document.write(email + " - " + isNumberEmail(email))
  document.write("<br>")
})

答案 2 :(得分:0)

您可以使用以下内容测试电子邮件的第一部分是否为数字:

function test( val ) {
  var first = val.match(/^([^@]+)/g)[0];
  return /^\d+$/g.test(first);
}

console.log(test('12345@email.com'));
console.log(test('12345678@email.com'));
console.log(test('abc12345@email.com'));
console.log(test('12345abc@email.com'));

答案 3 :(得分:-2)

认为这会起作用,如果有人可以验证,不介意。添加@以捕获组

/([1-9][0-9]*)+(@)/g

编辑:^\d+@根据@ dustmouse的评论工作