正则表达式的帮助 - 这是否可以与regexp一起使用?

时间:2016-05-09 22:02:37

标签: regex

我还在与regexp挣扎,想知道这是否可能。

我需要解析表达式中的变量名,但是我需要在#34; dot"之后跳过字符串文字中的变量名。

所以表达如下: 'test' + (n + text.length)

我只想获得ntext

我正在使用/([a-z_][a-z0-9_]*)/gi

但它给了我test,n,text,length

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

如果输入不太复杂,可以使用正则表达式:

var re = /'[^'\\]*(?:\\.[^'\\]*)*'|"[^"\\]*(?:\\.[^"\\]*)*"|(?:^|[^.])\b(\w+)/g; 
var str = '\'test\\\' this\' + "Missing \\\"here\\\"" + (n + text.length)';
document.body.innerHTML = "Testing string: <b>" + str + "</b><br/>";
var res = [];
while ((m = re.exec(str)) !== null) {
    if (m[1]) { res.push(m[1]); }
}
document.body.innerHTML += JSON.stringify(res, 0, 4);

正则表达式详情:

  • '[^'\\]*(?:\\.[^'\\]*)*' - 单引号字符串文字(支持转义序列)
  • | - 或
  • "[^"\\]*(?:\\.[^"\\]*)*" - 双引号字符串文字(支持转义序列)
  • | - 或
  • (?:^|[^.])\b(\w+) - 1个单词字符,位于字符串开头或非点后面,并以字边界开头(放在第1组内)

请参阅regex demo