我想检查用户输入是否是JavaScript的电子邮件地址,然后将其发送到服务器或试图发送电子邮件,以防止最基本的误解。


当前回答

如果你只想做的是抓住最明显的合成错误,我会做这样的事情:

^\S+@\S+$

它通常捕获了用户所犯的最明显的错误,并确保表格主要是正确的,这就是JavaScript验证的所有内容。

EDIT:我们也可以在电子邮件中查看“。

/^\S+@\S+\.\S+$/

其他回答

很难得到一个电子邮件验证器100%正确的唯一真正的方式来得到它正确的将是发送一个测试电子邮件到帐户。

一些要改进的事情:

而不是新的RegExp,只需尝试这样写出regexp:

if (reg.test(/@/))

其次,请确保在 @ 标志之后出现一个时期,并确保 @ 和 期间之间有字符。

如果您正在使用 AngularJS,只需添加 type="email" 到输入元素:

https://docs.angularjs.org/api/ng/input/input%5Bemail%5D

如果没有输入元素,可以动态创建:

var isEmail = $compile('<input ng-model="m" type="email">')($rootScope.$new()).
    controller('ngModel').$validators["email"];

if (isEmail('email@gmail.com')) {
  console.log('valid');
} 

如果你正在使用NG模式和材料,这就是工作。

vm.validateEmail = '([a-zA-Z0-9_.]{1,})((@[a-zA-Z]{2,})[\\\.]([a-zA-Z]{2}|[a-zA-Z]{3}))';

以下是 Regex 认证:

在 @ (-) 和 (.) 之前的空间字符不应该聚集在一起 之后 @ 没有特殊字符 之后 @ 2 字符 必须在 @ 电子邮件 长度 之前 应该 少于 128 字符 函数 验证 电子邮件(电子邮件) { var chrbeforAt = email.substr(0, email.indexOf('@')); 如果(!($.trim(电子邮件) 长度 > 127)) { 如果(chrbeforAt.length >= 2) { var re = /^([^<>()[\]{}'^?

如果您正在使用 Closure 您可以使用内置的 goog.format.Email 地址类型:

http://docs.closure-library.googlecode.com/git/class_goog_format_EmailAddress.html

例如:

goog.format.EmailAddress.isValidAddrSpec("blah@blah.com")

请注意,通过阅读来源(上面的链接),您可以看到评论表示 IDN 不受支持,并且仅旨在覆盖大多数地址:

// This is a fairly naive implementation, but it covers 99% of use cases.
// For more details, see http://en.wikipedia.org/wiki/Email_address#Syntax
// TODO(mariakhomenko): we should also be handling i18n domain names as per
// http://en.wikipedia.org/wiki/Internationalized_domain_name