使用reg-exp分割链函数串

时间:2014-10-12 08:54:33

标签: javascript regex parsing

我在StackOverflow上环顾四周但找不到答案!

无论如何,我想知道如何在JavaScript中使用regexp。

我有一个字符串

bla().func1($(ele).attr("data")).func2.func3("test")... ;

我希望从给定的字符串中提取func1,func2,func3 ...,有没有人有一个如何做的例子?

请记住,函数名称会发生​​变化,所以它们不是func1,func2 ......它们可以加载,过去,月亮......等等

2 个答案:

答案 0 :(得分:1)

试试这个:

var str = 'bla().func1($(ele).attr("data")).func2("test")';
alert(str.split(/(?:\.)\w+\d+(?=\()/g));

有小提琴: http://jsfiddle.net/cv6avhfb/3/

这段代码会将字符串分成几部分,同时使用'.func1(','。func2(','。abc3('等)作为分隔符子串。如果函数名称具有不同的结构,则只需更改\w+\d+正则表达式的一部分。

以下是此代码的结果:

bla(),($(ele).attr("data")),("test")

如果您想在javascript中了解有关正则表达式的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

答案 1 :(得分:0)

反复删除最内层的括号表达式:



var str = 'bla().func1($(ele).attr("data")).func2.func3("test")... ';
var expression = /\([^(]*?\)/g;
 
while (expression.test(str)) { str = str.replace(expression, ''); }

document.write(str.split('.').slice(1).join(' '));




但是,你不应该这样做(你为什么要这样做?)。 JS应该由JS解析器解析。例如,如果包含括号的字符串文字,上述内容将会失败。您应该使用Esprima解析它并分析生成的解析树。