我正在尝试在javascript中使用正则表达式,它将在字符串中找到包含3个不同单词的部分。这是我到目前为止的表达方式:
regEx = str.match(/(?=(\b(word1|word2|word3)\b(.+?)\b(word1|word2|word3)\b(.+?)\b(word1|word2|word3)\b))/gi);
这将返回6个空匹配。但是,我知道它与单词相匹配,因为当我使用.exec时,我可以在第一场比赛中获得所有组。但是如何让它在每场比赛中返回第一组?
答案 0 :(得分:1)
您可以使用以下代码获取每个匹配中的第一个子匹配:
var re = /(?=(\b(word1|word2|word3)\b(.+?)\b(word1|word2|word3)\b(.+?)\b(word1|word2|word3)\b))/gi;
var str = 'gg word1 something word2 some word3 ggg';
var res= []; // Array for the results
while ((m = re.exec(str)) !== null) { // Loop through matches
if (m.index === re.lastIndex) { // if we have a zero-length match
re.lastIndex++; // advance the regex index manually
}
res.push(m[1]); // Add a value to the resulting array
}
document.body.innerHTML = JSON.stringify(res, 0, 4);