如何从 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);
我有一段列出了一些电子邮件,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);