我有电子邮件的数据:数据模式就像: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
}
}任何建议都会有帮助。谢谢
发布于 2011-05-31 18:40:31
下面的函数将主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();工作实例:
http://jsfiddle.net/kuroir/H7VaT/
发布于 2011-05-31 18:32:40
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;
}
}除非你的名字里有@的人,否则它应该能起作用.(这是为了防止在名称/空名称字符串中有空格的人)
发布于 2011-05-31 18:37:21
你需要澄清一下你想做什么吗?从你的措辞判断,你想要验证电子邮件地址。下面是一些未经测试的代码:
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]);
}https://stackoverflow.com/questions/6191853
复制相似问题