繁体   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