正则表达式匹配点 '.' 之间的所有内容并关闭大括号'('

Regex match everything between dot '.' and close brace '('

我有 myObject.myFunction(),我想在正则表达式中匹配 myFunction。如果我想匹配两个字符串之间的所有内容,表达式 abc(.*)def 有效;所以 var str = 'abc test def';str.match(/.(.*)def/) 会像预期的那样 return ["abc test def", " test "] 。但是表达式 .(.*)( 不起作用。我想在我的 sublime text 2 中添加一个 Javascript 语法。谢谢。

But the expression .(.*)( does not work.

因为.是正则表达式中的特殊字符。要匹配文字 .,请将其转义:\.

(也比较特殊,所以也要转义:

var str = "/* Some function call */ myObject.myFunction() /* stuff */";
var match = str.match(/\.(.*)\(/);
document.body.innerHTML = match[1];

因为 .* 是一个贪婪的子模式,它匹配到行中的最后一个 (。您可以使用否定字符 class [^(]* 来匹配第一个 (:

var str = "/* Some function call */ myObject.myFunction() { var str = \"String ()\";} /* stuff */";
document.body.innerHTML += str.match(/\.([^(]*)/)[1] + "<br/>";
document.body.innerHTML += str.match(/\.(.*)\(/)[1];