javascript - 电子邮件验证功能循环不推送所有值
问题描述
我有一个逗号分隔的字符串值,我正在尝试拆分和清理有效电子邮件。虽然我已经能够将字符串拆分为一个数组并具有验证电子邮件地址的数组项的功能,但它似乎没有遍历每个项并将有效的项推送到新数组。目前我只推送了一个值。
提供的是字符串:
'test@gmail.com, email, nice@test.com'
以下是功能:
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function emailParser(emailString){
var preFilterEmails = emailString.split(",");
var postFilterEmails = [];
for(i = 0; i < preFilterEmails.length; i++){
console.log(preFilterEmails);
if(validateEmail(preFilterEmails[i])){
console.log("Filtered");
console.log(preFilterEmails[i]);
postFilterEmails.push(preFilterEmails[i])
}
}
return postFilterEmails;
}
电流输出:
[ 'test@gmail.com', ' email', ' nice@test.com' ]
Filtered
test@gmail.com
[ 'test@gmail.com', ' email', ' nice@test.com' ]
[ 'test@gmail.com', ' email', ' nice@test.com' ]
[ 'test@gmail.com' ]
解决方案
这是因为逗号后的空格。你可以trim()
之后split()
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function emailParser(emailString){
var preFilterEmails = emailString.split(",").map(x=>x.trim());
var postFilterEmails = [];
for(i = 0; i < preFilterEmails.length; i++){
console.log(preFilterEmails);
if(validateEmail(preFilterEmails[i])){
console.log("Filtered");
console.log(preFilterEmails[i]);
postFilterEmails.push(preFilterEmails[i])
}
}
return postFilterEmails;
}
console.log(emailParser('test@gmail.com, email, nice@test.com'));
推荐阅读
- javascript - 在 property1 值通过条件后,如何检查同一项目中的 property2 值?
- github-actions - SFDX 和 Github 操作 - 警告:force:auth:sfdxurl:store 不是 sfdx 命令
- amazon-web-services - 如何将条件放入 serverless.yml 文件中?
- javascript - 如何获得 onChange 值?
- python - 有没有办法获取熊猫可用的语言环境列表?
- client-server - DDS中如何实现请求响应机制?
- python - auto-py-to-exe 生成 2 条错误消息:“UPX 不可用”和“打包时出错”
- javascript - 正则表达式排除特定单词
- c# - xUnit 测试类内部
- android - 在前台服务中访问位置是否被视为在后台访问位置?