2011-04-13 105 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> 
相關問題