我想检查用户输入是否是JavaScript的电子邮件地址,然后将其发送到服务器或试图发送电子邮件,以防止最基本的误解。
当前回答
其他回答
在我的情况下,我想避免 ~ 和 # 这就是为什么我使用了另一个解决方案:
function validEmail(email){
const regex = /^((?!\.)[\w\-_.]*[^.])(@\w+)(\.\w+(\.\w+)?[^.\W])$/;
return regex.test(email);
}
如果您正在使用 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');
}
做这:
^([a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$
基于 RFC 2822
点击 https://regex101.com/r/857lzc/1
经常在数据库中存储电子邮件地址时,我会使它们变得更低,在实践中, regexs 通常可以被标记为案例不敏感。
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
下面是它在JavaScript中使用的一个例子(最终是无敏感的旗帜)。
var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
console.log( emailCheck.test('some.body@domain.co.uk') );
注意: 技术上,一些电子邮件可以包含引用在 @ 符号之前的部分与逃避字符在引用中(因此,您的电子邮件用户可以是无情的,并包含如 @ 和“......”等内容,只要它是写在引用中)。
注意2:电子邮件的开始(在 @ 标志之前)可能是案例敏感(通过规格)。但是,任何具有案例敏感电子邮件的人可能会遇到问题,在实践中,案例不敏感是一个安全的假设。
使用常规表达式:
/^[a-z][a-zA-Z0-9_.]*(\.[a-zA-Z][a-zA-Z0-9_.]*)?@[a-z][a-zA-Z-0-9]*\.[a-z]+(\.[a-z]+)?$/
例子:
function validateEmail(email) {
var re = /^[a-z][a-zA-Z0-9_.]*(\.[a-zA-Z][a-zA-Z0-9_.]*)?@[a-z][a-zA-Z-0-9]*\.[a-z]+(\.[a-z]+)?$/;
return re.test(email);
}
只允许 @,,
HTML5 本身有电子邮件验证,如果您的浏览器支持 HTML5,则可以使用下列代码。
<form>
<label>Email Address
<input type="email" placeholder="me@example.com" required>
</label>
<input type="submit">
</form>
JSFiddle 链接
从HTML5 spec:
有效的电子邮件地址是一条符合下一个ABNF的电子邮件生产的行,字符设置为 Unicode. 电子邮件 = 1*( atext / "." ) “@” 标签 *( "." 标签 ) 标签 = let-dig [ [ [ ldh-str ] let-dig ] ; 限于 RFC 1034 节 3.5 节 atext = < 如 RFC 5322 节 3.2.3 定义 > let-dig = < 如 RFC 1034 节 3.5 定义 > ldh-str
推荐文章
- 转换php数组到Javascript
- 如何跳转到浏览器页面的顶部
- 在电子邮件消息中是否支持JavaScript ?
- 如何在JavaScript中指定Math.log()的基?
- 多重左赋值JavaScript
- 如何在单个测试基础上更改模拟实现?
- VueJS有条件地为元素添加属性
- Uncaught TypeError:(中间值)(…)不是一个函数
- 如何设置URL查询参数在Vue与Vue路由器
- 无法读取属性“addEventListener”为空
- 如何防止moment.js从webpack加载地区?
- getMonth在javascript中给出前一个月
- 两行文本溢出省略号
- 如何在禁用按钮上启用引导工具提示?
- Node.js全局变量