使用jquery验证电子邮件

时间:2011-05-31 18:27:16

标签: javascript jquery validation

我有包含电子邮件的数据: 数据模式类似于: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
    }
}

任何建议都会有所帮助..谢谢

4 个答案:

答案 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();

工作示例:

http://jsfiddle.net/kuroir/H7VaT/

答案 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