2015-09-25 3 views
0

мне нужно, чтобы соответствовать всем charecters и цифры (\ w) внутри строки, которые не внутри одинарных кавычек (\ ')Regex матч письма не внутри одной цитаты

Например, есть строка:

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

из этой строки мне нужно получить:

- param 
- param4 
- param8 

Thx для любого заранее.

ответ

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);