JavaScript 正则表达式电子邮件验证

IT技术 javascript regex
2021-02-15 06:35:52

这段代码总是发出警报"null",这意味着字符串与表达式不匹配。

var pattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$"; 

function isEmailAddress(str) {

    str = "azamsharp@gmail.com";      

    alert(str.match(pattern)); 
    return str.match(pattern);    

}
6个回答

如果您将正则表达式定义为字符串,则所有反斜杠都需要转义,因此您应该使用 '\\w' 而不是 '\w'。

或者,将其定义为正则表达式:

var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/; 

顺便说一句,请不要在客户端验证电子邮件地址。无论如何,您的正则表达式太简单了,无法传递给可靠的实现。

在这里看到真实的东西:http : //www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

这将不支持以下电子邮件地址:bob+tag@gmail.com、bob@foo123.com 和 bob.sagat@gmail.com(正如 Nadia Alramli 已经指出的那样)
2021-04-16 06:35:52
为什么不应该在客户端验证电子邮件地址?当然,这是一种更快的客户端验证形式,因为我们不需要通过网络发出多个 HTTP 请求来验证数据?(这对于可能通过慢速 Wifi 或移动网络联系服务器的移动应用程序尤其重要)。
2021-04-27 06:35:52
此正则表达式不支持像 john.smith@gmail.com 这样的地址
2021-04-28 06:35:52
它不支持 emailadd@gmail.com.sa 之类的电子邮件
2021-05-10 06:35:52
这个表达式还有很多不足之处:1) 不允许使用许多有效的用户名字符,例如破折号和加号;2) 禁止在许多 ccTLD 中发现超过 2 个部分的域,例如geek.co.il3) 禁止许多使用 4 个或更多字符的新 TLD,例如mobiinfo4) 根本不支持 IDN。
2021-05-13 06:35:52

这是我在我的页面上使用的。

http://www.zparacha.com/validate-email-address-using-javascript-regular-expression/

/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/

这也是无效的。查看最高级别域列表iana.org/domains/root/db
2021-04-20 06:35:52
对于某些新域,这将失败
2021-04-23 06:35:52
干得好,谢谢。这是我见过的最好的之一。
2021-05-07 06:35:52
不支持“+”寻址,即“user+label@gmail.com”。
2021-05-10 06:35:52

我一直在使用这个功能一段时间。它返回一个布尔值。

// Validates email address of course.
function validEmail(e) {
    var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    return String(e).search (filter) != -1;
}
我知道这是旧的,但这可以简化为: return String(e).match(/^\s*[\w\-\+_]+(?:\.[\w\-\+_] +)*\@[\w\-\+_]+\.[\w\-\+_]+(?:\.[\w\-\+_]+)*\s*$/) ; 如果不匹配,它将返回 null,如果匹配,则返回电子邮件地址本身的单个项目数组。
2021-05-03 06:35:52
我认为你的正则表达式没有验证,比如说,nicolas.@gmail.com ......这符合 RFC822 吗?我不确定。有人要验证吗?
2021-05-03 06:35:52
它给 aaa-------@gmail.com 为真
2021-05-08 06:35:52

您可能对这个问题(或这个问题感兴趣,它强调了这样一个事实:通过正则表达式识别有效的电子邮件地址是一个非常难以解决的问题(如果可以解决的话)

用更简单的

这里是 :

var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
var email = document.getElementById("txtEmail");

if (regexEmail.test(email.value)) {
    alert("It's Okay")
} else {
    alert("Not Okay")

}

祝你好运。

在写这篇文章的时候,这很有效......让我们希望它保持这种状态,因为我已经经历了很多这样的事情;)
2021-04-16 06:35:52