我有包含电子邮件的数据:
数据模式类似于:first_name last_name email
data = foo bar foo@bar.com, foo baz foo@baz.com,foo foo foo@foo.com,bar@bar.com , bar baz bar@baz.com
它可能包含空格。我必须通过提取数据来验证所有电子邮件。 注意:单词之间可能有空格,因此按空格分割会给我带来更多不需要的数据......
function validate() {
email_data = data.split(',') // This will get the all data spliting by ','
for (i = 0; i<email_data.length; i++) {
email_new_data = email_data.split(' ') //spliting data by space
// Now I could not find the way to extract emails (only ) from data
}
}
任何建议都会有所帮助..谢谢
答案 0 :(得分:1)
以下函数将主data
字符串拆分为数组;然后可以使用RegExp
进行解析。据我所知,你只想获得电子邮件地址;因此,我们使用Regular Expression
来匹配电子邮件地址。如果匹配,则您有一封有效的电子邮件。如果没有匹配;然后基本上没有给定段的有效电子邮件。
请注意,Regular Expression
100%成功完成电子邮件验证是不可能的;因为RFC非常复杂,请在此处查看更多信息:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
function validate() {
data = "foo bar foo@bar.com, foo baz foo@baz.com,foo foo foo@foo.com,bar@bar.com , bar baz bar@baz.com";
email_data = data.split(','); // This will get the all data spliting by ','
for (i = 0; i < email_data.length; i++) {
// Get emails, change console.log to alert if you don't know how to use console.
console.log(email_data[i].match(/[\w._+-]+@[\w._+-]+\.[\w]{2,6}/));
}
}
validate();
工作示例:
答案 1 :(得分:0)
var email_list = new Array();
var k = 0;
for (j=0; i<email_new_data.length; i++) {
if (email_new_data.search('@') != -1) {
email_list[k++] = email_new_data;
}
}
除非你的名字中有@
的人,否则应该有效......
(这是因为你的名字/空名字符串中有空格的人)
答案 2 :(得分:0)
你需要澄清一下你想做的事情吗?从您的措辞来看,您想验证电子邮件地址。这是一些未经测试的代码:
var emailpattern = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-z]{2,4}$");
function validateEmail(email){
return emailpattern.match(email);
}
function processEmail(emailData){
emailData = emailData.split(' ');
var firstName = emailData[0];
var lastName = emailData[1];
var email = emailData[2];
if (validateEmail(email)){
// Your stuff if valid
} else {
// If email is not valid
}
}
var data = data.split(','); // Whereever you get your data from
for (var i=0; i<data.length; i++){
processEmail(data[i]);
}
答案 3 :(得分:0)
您可以在服务器上验证这一点吗?
我问的原因是许多服务器端库都预先构建了完全这个库,实现为规范的正确解析器,而不是RegEx。
分割数据并提取电子邮件很容易,验证电子邮件是很难的。
见这里:http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx