我是常规表现的新手,我有以下数据 从此我想获得唯一的电子邮件ID。如何使用常规expresison
commit 01
emailid: Tests <tests@gmail.com>
Date: Wed Jun 18 12:55:55 2014 +0530
details
commit 02
emailid: user <user@gmail.com>
Date: Wed Jun 18 12:55:55 2014 +0530
location
commit 03
emailid: Tests <tests@gmail.com>
Date: Wed Jun 18 12:55:55 2014 +0530
france24
commit 04
emailid: developer <developer@gmail.com>
Date: Wed Jun 18 12:55:55 2014 +0530
seloger
通过常规表现我可以如何退休tests@gmail.com,user@gmail.com,developer@gmail.com
答案 0 :(得分:5)
这个正则表达式:
emailid: [^<]*<([^>]*)
emailid:
匹配该字符串文字[^<]*<
匹配任何不是<
的字符,然后匹配<
([^>]*)
会将所有不属于>
的字符捕获到第1组。这是您的emailid。在the regex demo中,查看右侧窗格中的“组捕获”。这就是我们正在寻找的。 p>
获取唯一的电子邮件
对于每个匹配,我们检查emailid是否已经在我们的唯一电子邮件ID数组中。请参阅此JS demo的输出。
var uniqueids = [];
var string = 'blah emailid: Tests <tests@gmail.com> emailid: user <user@gmail.com> emailid: Tests <tests@gmail.com> emailid: developer <developer@gmail.com>'
var regex = /emailid: [^<]*<([^>]*)/g;
var thematch = regex.exec(string);
while (thematch != null) {
// print the emailid, or do whatever you want with it
if(uniqueids.indexOf(thematch[1]) <0) {
uniqueids.push(thematch[1]);
document.write(thematch[1],"<br />");
}
thematch = regex.exec(string);
}