如何从无效的电子邮件地址中清除文件

时间:2011-04-13 12:38:36

标签: javascript email-validation

我正在寻找一个可以将csv文件作为输入的脚本或其他东西。 它会逐行解析文件并检查当前行是否包含有效的电子邮件(例如:user@domain.ext)

我认为这必须已存在于某处。

带有一些javascript / jquery的本地html文件将是完美的。

我需要这个来检查列表,手动输入的电子邮件没有验证。

由于 米歇尔

4 个答案:

答案 0 :(得分:0)

你无法使用javascript读取或写入本地文件,我在ruby中写道。如果代码对你没用,也许正则表达式会。

#!/usr/bin/ruby
File.open("somefile.csv").each{ |line|
    if line =~ /\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6}/
        puts "Good email!"
    else
        puts "FAIL"
    end
}

答案 1 :(得分:0)

1)请注意,验证电子邮件地址非常困难。事实上,做不完美是不可能的。这是表达复杂性,覆盖率和准确性(误报)之间的权衡。查看有关验证电子邮件地址的其他问题的数以万计,还可以在此处查看:http://www.regular-expressions.info/email.html

2)你有一个平面文件(.csv)。您无法在浏览器中使用javascript和进程阅读此内容。你需要看一些其他语言。 Perl和Java随机提到两种语言都有很好的正则表达式支持。

答案 2 :(得分:0)

既然你找了一个Javascript解决方案,这里有一些普通的JS,假设你有一些包含csv数据的文件,如下所示:

<pre id="csv">
a,b,567@noe.invalid!tld
1,2,me@example.net
4,5,so@ex.com
</pre>

以下是您可能希望替换分隔符的脚本,使用的换行符或用于检查地址的正则表达式。根据您的验证要求,请在此处查找其他正则表达式:Validate email address in JavaScript?

var separator = ',',
    linebreak = '\n',
    regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
    csv = document.getElementById('csv'),
    lines = csv.innerHTML.split(linebreak),
    fields,
    i;

for(i = 0; i < lines.length; i++)
{
    fields = lines[i].split(separator);
    if (regex.test(fields[mailColumn]))
    {
        document.write(fields[mailColumn] + ' is valid<br/>');
    }
}

答案 3 :(得分:0)

您好,感谢您的回答。 我最终设法使用本地html文件和javascript。 这是方法:

  1. 拥有本地网络服务器(如xampp)
  2. 创建一个html文件,使用jquery(例如)在AJAX中加载csv文件
  3. 将\ n(换行符)上加载的文件拆分为数组
  4. 根据需要处理每个数组元素(在“;”等上再次拆分)
  5. 填写两个textarea字段:一个包含有效的电子邮件地址,另一个包含无效的地址
  6. 手动修复或删除无效textarea的地址
  7. 将有效的textarea复制/过去到新的干净文件
  8. 为了让它工作,我将csv文件放在html文件旁边,然后我使用“input type = file”来加载它

    瞧: - )

    原始代码:

    <!DOCTYPE html>
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Validation email</title>
    <script src="jquery.js"></script>
    <script>
    function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
    };
    
    
    function no_accent (my_string) {
        var new_string = "";
        var pattern_accent         = new Array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ý','þ','ÿ');
        var pattern_replace_accent = new Array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','D','N','O','O','O','0','O','O','U','U','U','U','Y','b','s','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','u','y','y','b','y');
        if (my_string && my_string!= "") {
            new_string = preg_replace (pattern_accent, pattern_replace_accent, my_string);
        }
        return new_string;
    }
    
    $(document).ready(function() {
        $('#checkMail').click(function() {
    
        $('#invalid').val('');
          $('#valid').val('');
    
          $.ajax({
            type: "GET",
            url: $('#fileName').val(),
            dataType: "text",
            cache:false,
            success: function(text) {
              alert("Start process");
              var reg=new RegExp("\r\n", "g");
              var monTab = text.split(reg);
    
              for (cpt=0;cpt<monTab.length;cpt++){
    
    
    //do some custom check here if needed
    
                    if (isValidEmailAddress(monTab[cpt])){
                        //add to valid textarea
                        document.getElementById('valid').value += monTab[cpt] + "\r\n";
                    } else {
                        //add to invalid textarea
                        document.getElementById('invalid').value += monTab[cpt] + "\r\n";
                    }
                }
              alert("Process over!");
            }
          });//close $.ajax 
        });
    });
    
    </script>
    </head>
    <body>
    <input type="file" name="myfile" size="50" id="fileName"> (put csv file next to this html file)<br/>
    <input type="button" value="Process" id="checkMail">
    <br/>
    Invalid adresses : <br/>
    <textarea id="invalid" cols="80" rows="20"></textarea>
    <br/>
    Valid adresses : <br/>
    <textarea id="valid" cols="80" rows="20"></textarea>
    </body>
    </html>