2011-04-13 166 views
0

我正在寻找一个脚本或将获得一个csv文件作为输入的东西。 它会逐行解析文件并检查当前行是否包含有效的电子邮件(例如:[email protected]如何从无效的电子邮件地址清除文件

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

一个JavaScript/jQuery的本地html文件将是完美的。

我需要此检查与手动输入的电子邮件没有验证的列表。

感谢 米歇尔

+0

网页是没有办法的办法,也许你希望它与[Windows脚本](http://msdn.microsoft.com/en-us/library/czxefwt8(V = vs.85)做的.aspx )而不是? – 2011-04-13 13:15:13

+0

我不认为JavaScript是做这件事的最佳工具。也许像PHP这样的服务器端脚本会更好。 – kjy112 2011-04-13 13:28:36

回答

0

您将无法读取或写入使用javascript本地文件,我在红宝石写这个。如果代码对你没有用处,也许正则表达式会。

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

1)请注意,验证电子邮件地址非常困难。事实上,要做到完美是不可能的。这是表达复杂度,覆盖率和准确度之间的平衡(误报)。有关验证电子邮件地址的其他问题,请参见:http://www.regular-expressions.info/email.html

2)您有一个平面文件(.csv)。你不能用JavaScript读取它并在浏览器中进行处理。你需要看一些其他的语言。 Perl和Java随机提及两种语言都有很好的正则表达式支持。

0

既然你找了一个Javascript的解决方案,下面是一些简单的JS假设你有一个包含这样的CSV数据的一些文件:

<pre id="csv"> 
a,b,[email protected]!tld 
1,2,[email protected] 
4,5,[email protected] 
</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/>'); 
    } 
} 
0

您好,感谢您的答案。 我最终设法用一个本地html文件和JavaScript来做到这一点。 这里是方法:

  1. 有一个本地的Web服务器(如XAMPP)
  2. 创建将使用jQuery的(例如)对加载CSV文件中的AJAX
  3. 拆分加载文件的HTML文件将\ n(换行符)换成数组
  4. 根据需要处理每个数组元素(在“;”上再次分割))
  5. 填充两个文本区域字段:一个有效的电子邮件地址,其他与无效问卷
  6. 手动修复或无效的textarea删除不会忽略
  7. 复制/过去有效的textarea到一个新的干净的文件

为了有工作,我把旁边的HTML文件CSV文件,然后我用的是“输入型=文件”来加载它

瞧:-)

原始代码:

<!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> 
相关问题