使用JavaScript从文本文件中提取电子邮件地址

3

我有超过2000个电子邮件地址,是从FeedBurner导出的。这些电子邮件地址看起来如下:

    adminvicky@gmail.com   Active  12/05/2015  03:07
   adminvishal250@gmail.com   Pending Verification 8/05/2015  01:07

我希望能够使用JavaScript从文本文件中提取电子邮件地址,同时去掉“Active”、“Pending Verification”、“Date [即8/05/2015]”和“Time [即03:07]”这些词语。我已经编写了一个类似下面的JavaScript程序,可以成功地去除“Active”和“Pending verification”文本。请参考以下内容:
<script>
  function extracter() {

    var a = document.getElementById('input').value;

    document.getElementById('output').innerHTML =

    a.replace(/Active|Pending|Verification| /g, '');

  }
</script>

<textarea id="input"></textarea><br/>
<br/>

<input type="button" value="click" onclick="extracter()"/>
<br/>
<br/>
<textarea id="output"></textarea>

输出结果如下:

 adminvicky@gmail.com  12/05/2015  03:07
   adminvishal250@gmail.com  8/05/2015  01:07

我希望你能帮我得到以下输出。请帮我删除"Date"和"Time",

     adminvicky@gmail.com 
   adminvishal250@gmail.com

我已经编写了一个NPM包,用于从文本中提取电子邮件。 - Gajus
7个回答

4

试试这个,我认为它可以完成任务。

var a = document.getElementById('input').value;

document.getElementById('output').innerHTML = extractEmails(a).join('\n');

并且这个函数:

function extractEmails (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}

这里有一个代码片段

还有一个使用jQuery的示例,可以从大量文本中提取所有电子邮件地址


1
尝试使用这个正则表达式:
([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)

正则表达式演示

在你的Javascript中,你可以这样实现:

function getMail ( text ){
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
    }

JSFIDDLE DEMO

的内容与编程有关。

1
你可以轻松地编写正则表达式并迭代结果,如下所示:
var reg = new RegExp(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/g);   
var email;
while((email = reg.exec(targetText)) !== null) {
    // do something with the email
}

1

让我们尝试使用这个简单的正则表达式:

var record = '    adminvicky@gmail.com   Active  12/05/2015  03:07';
var regExp = /^\s*(.*?)\s+/;
console.log(record.match(regExp)[1]);


1
你可以尝试使用这个正则表达式:
a.replace(/\s+.+$/g, '')

这对你的情况应该有效。

1
我会使用 string.split(" ") 并将文本文件按其空格进行拆分。
示例:
var string = "    adminvicky@gmail.com   Active  12/05/2015  03:07   adminvishal250@gmail.com   Pending Verification 8/05/2015  01:07"
var array = string.split(" ");
var emails = [];
for(var i = 0; i < array.length; i++){
    if(array[i].indexOf("@") != -1){
       emails.push(array[i]);
    }
};

然后您有一个包含电子邮件地址的数组emails。

0
使用 JQuery 的 load 函数从 .txt 文件中读取内容并将电子邮件显示为超链接:
$(document).ready(function(){
        //Get the text content from txt file using load function
            $( "#divid" ).load( "/xyz.txt",function(response, status, xhr){
                if(status=='success') {
                     /* After loading the static text, modifying the email address to hyper link */
                      var corrected = response;
                      var emailRegex =/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/g;
                      corrected.match(emailRegex).forEach(function(email) {
                      console.log(email);
                      corrected = corrected.replace ( email, '<a href="mailto:' + email + '">' + email + '</a>' );
                    });

                    $('#divid').html(corrected);
                }

                });
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接