我想检查用户输入是否是JavaScript的电子邮件地址,然后将其发送到服务器或试图发送电子邮件,以防止最基本的误解。
当前回答
好吧,有很多答案包含一些不同的常规表达式,我尝试了很多,我得到了不同的结果和各种不同的问题。
对于 UI 验证,我对寻找 @ 标志的最基本检查很好,重要的是要注意的是,我总是用标准的“验证电子邮件”进行服务器侧验证,其中包含用户确认他们的电子邮件地址的独特链接。
if (email.indexOf('@') > 0)
我故意选择了0甚至以零为基础,因为它也确保在 @ 之前有一个单个字符。
其他回答
我的同事和我分享了这个雷格斯,我很喜欢它。
function isValidEmailAddress (email) {
var validEmail = false;
if (email) {
email = email.trim().toLowerCase();
var pattern = /^[\w-']+(\.[\w-']+)*@([a-zA-Z0-9]+[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*?\.[a-zA-Z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/;
validEmail = pattern.exec(email);
}
return validEmail;
}
if (typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
有一些复杂的RegEx写在这里,这也工作。
我试过这个,它也工作了:
[a-zA-Z0-9._]+[@]+[a-zA-Z0-9]+[.]+[a-zA-Z]{2,6}
请点击此处: http://www.regextester.com/?fam=97334
希望这能帮助。
如果你正在使用NG模式和材料,这就是工作。
vm.validateEmail = '([a-zA-Z0-9_.]{1,})((@[a-zA-Z]{2,})[\\\.]([a-zA-Z]{2}|[a-zA-Z]{3}))';
一个很好的做法是验证客户端的数据,但双重检查服务器上的验证。 考虑到这一点,您可以简单地检查是否链接看起来像客户端的有效电子邮件地址,并在服务器上进行严格的检查。
下面是我使用的JavaScript功能来检查一个字符串是否看起来像一个有效的邮件地址:
function looksLikeMail(str) {
var lastAtPos = str.lastIndexOf('@');
var lastDotPos = str.lastIndexOf('.');
return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
}
解释:
lastAtPos < lastDotPos: Last @ 应该是之前的最后. 因为 @ 不能是服务器名称的一部分(我知道的范围内)。 lastAtPos > 0: 应该是某些东西(电子邮件用户名)之前的最后 @. str.indexOf('@') == -1: 应该是没有 @@ 在地址. 即使 @ 出现在电子邮件用户名中的最后一个字符,它必须引用这样“ 会是 @ 和最后一个 @ 在地址。
只是为了完整性,这里有另一个RFC 2822符合规则。
我的焦点
推荐文章
- 转换php数组到Javascript
- 如何跳转到浏览器页面的顶部
- 在电子邮件消息中是否支持JavaScript ?
- 如何在JavaScript中指定Math.log()的基?
- 多重左赋值JavaScript
- 如何在单个测试基础上更改模拟实现?
- VueJS有条件地为元素添加属性
- Uncaught TypeError:(中间值)(…)不是一个函数
- 如何设置URL查询参数在Vue与Vue路由器
- 无法读取属性“addEventListener”为空
- 如何防止moment.js从webpack加载地区?
- getMonth在javascript中给出前一个月
- 两行文本溢出省略号
- 如何在禁用按钮上启用引导工具提示?
- Node.js全局变量