正则表达式匹配字母不在单引号内

时间:2015-09-25 06:20:36

标签: javascript regex

我需要匹配字符串内的所有字符和数字(\ w),而不是单引号(\')

例如我有字符串:

param : 'test' .param4 'zzzz' param8 * 'rrrr'

从我需要得到的那个字符串:

- param
- param4
- param8

任何进步的Thx。

1 个答案:

答案 0 :(得分:3)

您可以使用这个基于前瞻性的正则表达式:

/(?=(?:(?:[^']*'){2})*[^']*$)\b\w+\b/gm

RegEx Demo

如果该单词在单引号之外,则该正则表达式将匹配一个单词,使用前瞻以确保每个单词后面都有偶数引号。假设未转义的报价是平衡的。

<强>代码:

var re = /(?=(?:(?:[^']*'){2})*[^']*$)\b\w+\b/gm; 
var str = 'param : \'test\' .param4 \'zzzz\' param8 * \'rrrr\' class2.class3*dsaasd';
var m;
var result;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex)
        re.lastIndex++;
    res.push(m[0]);
}

console.log(result);