如何只匹配数字电子邮件地址?
我正在测试以下电子邮件地址:
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])+(@+)
答案 0 :(得分:5)
正则表达式/^\d+(?=@)/
将为您实现此目的。从下图中可以看出,它查找行的开头,后跟一个或多个数字,后跟“@”符号。
以下是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的评论工作