簡體   English   中英

如何從Javascript中具有不同值的字符串中提取子字符串?

[英]How to extract substring from a String with different values in Javascript?

我有一段包含一些電子郵件、電話和 URL 的列表。

我想從該單個字符串中提取所有 (600) 電子郵件、電話和 URL。

我試圖用 Javascript 中的 substr 來做到這一點,但我可能遺漏了某個地方。

這是我的示例數據的示例:

*Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789*

請用 JavaScript 指導我。

var myEmail = [];
var ol = myS.substr((myS.indexOf("Email:")+1),(myS.indexOf('Url:')-2));
for(let i=0;i<600;i++){
   var ml = myS.substr((myS.indexOf(ol)+1),(myS.indexOf('Url:')-2));
console.log(ml);

}

 const data = `*Email:info@abc.com Url: www.example.com Tel: +123-456-789 Email:info@abc.com Url: www.example.com Tel: +123-456-789 Email:info@abc.com Url: www.example.com Tel: +123-456-789 Email:info@abc.com Url: www.example.com Tel: +123-456-789*`; const reEmails = /^\\*?Email: ?(.*@.*\\..*)\\*?$/gm; const reTels = /^\\*?Tel: ?(\\+?\\d*-?\\d*-?\\d*)\\*?$/gm const reUrls = /^\\*?Url: ?(www\\..*\\..*)\\*?$/gm const emails = data.match(reEmails).map(m => m.replace(reEmails, '$1')); const tels = data.match(reTels).map(m => m.replace(reTels, '$1')); const urls = data.match(reUrls).map(m => m.replace(reUrls, '$1')); console.log('emails:', emails); console.log('tels:', tels); console.log('urls:', urls);

如果格式沒有太大變化,有一個簡單的解決方案。

讓我們用正則表達式分隔“單詞”

const email = `*Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789
Email:info@abc.com
Url: www.example.com
Tel: +123-456-789*`;

const matches = email.match(/[^ :\n]*/g);
console.log(matches);

現在我們可以過濾要求出現“@”

const results = matches.filter( e => e.indexOf('@') !== -1 );
console.log(results);

暫無
暫無

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

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