[英]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 地址提取器的現場演示
特征
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.