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

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

我有一段列出了一些电子邮件,phone 和 URL。

我想从那个字符串中提取所有 (600) 封电子邮件、phone 和 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);

}

如果格式变化不大,有一个简单的解决方案。

让我们用正则表达式

分开'words'
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);

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, ''));
const tels = data.match(reTels).map(m => m.replace(reTels, ''));
const urls = data.match(reUrls).map(m => m.replace(reUrls, ''));

console.log('emails:', emails);
console.log('tels:', tels);
console.log('urls:', urls);