簡體   English   中英

從字符串中提取 email 地址

[英]Extract email address from string

我有一個這樣的字符串:

Francesco Renga <francesco_renga-001@gmail.com>

我只需要提取 email,即 francesco_renga-001@gmail.com。

如何以“優雅”的方式在 nodejs/javascript 中執行此操作?

使用正則表達式,如果您的字符串模式始終為Some text<email>Some text<email>, Some text<email> <email> ,則可以使用此簡單的<(.*?)>

演示版

其他解決方案

使用正向前瞻: [^<]+(?=>) ,這是一個代碼段和一個演示

 var text = "Francesco Renga <francesco_renga-001@gmail.com>, Marty McFly <mmcfly@gmail.com> Marty McFly <mmcfly@gmail.com> <mmcfly2@gmail.com>"; var re = /[^< ]+(?=>)/g; text.match(re).forEach(function(email) { console.log(email); }); 

說明

[^<]+匹配除<無限制次數之間的任何內容

(?=>)后跟一個>

簡單,不需要任何組。

這是一個簡單的示例,顯示了如何在JavaScript中使用正則表達式:

 var string = "Francesco Renga <francesco_renga-001@gmail.com>"; // Your string containing var regex = /<(.*)>/g; // The actual regex var matches = regex.exec(string); console.log(matches[1]); 

這是正則表達式/<(.*)>/的分解:

  • //是定義正則表達式所必需的
  • <>只需匹配字符串中的兩個<>
  • ()括號“捕獲”您要查找的內容。 在這里,他們獲得了內部的郵件地址。
  • .*. 表示“任何字符”, *表示“任何次數。結合起來,表示”任何次數的任何字符”,並且在<> ,與郵件所在的位置相對應。

這是一個簡單的代碼,展示了如何使用 JavaScript 提取電子郵件地址的唯一列表:

let emaillst = string .match(/([a-zA-Z0-9._+-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);

            if (emaillst === null) {
                // no Email Address Found
            } else {
                const uniqueEmail = Array.from(new Set(emaillst));
                const finaluniqueEmail = [];
                for(let i=0; i<=uniqueEmail.length; i++){
                    let characterIs = String(uniqueEmail[i]).charAt(String(uniqueEmail[i]).length - 1)
                    if(characterIs==='.'){
                        finaluniqueEmail.push(String(uniqueEmail[i].slice(0, -1)))
                    }else{
                         finaluniqueEmail.push(uniqueEmail[i]);
                    }
                }
                emaillst = finaluniqueEmail.join('\n').toLowerCase();
                console.log(matches[1]);

在線查看 email 地址提取器的現場演示

特征

  • 獲取獨特的電子郵件
  • 自動刪除重復的電子郵件
  • 將大寫 email 地址轉換為小寫
for(let i=0; i<=uniqueEmail.length; i++){
                    let characterIs = String(uniqueEmail[i]).charAt(String(uniqueEmail[i]).length - 1)
                    if(characterIs==='.'){
                        finaluniqueEmail.push(String(uniqueEmail[i].slice(0, -1)))

我不明白你為什么需要這段代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM