使用reg-exp拆分链函数的字符串

split string of chain functions with reg-exp

本文关键字:字符串 函数 reg-exp 拆分 使用      更新时间:2023-09-26

我环顾StackOverflow,但找不到答案!

无论如何,我想知道如何使用正则表达式在JavaScript中获得以下内容。

我有一个字符串

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

我想从给定的字符串中提取func1、func2、func3…,有人举过这样做的例子吗?

请记住,函数名称会更改,因此它们不是func1、func2。。。它们可以是负载,过去,月亮。。。任何

试试这个:

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

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

此代码会将字符串拆分为多个部分,同时使用诸如'.func1(','.func2(','.abc3('和other之类的子字符串作为分隔符。如果函数名的结构不同,则只需更改正则表达式的'w+'d+部分即可。

这是这个代码的结果:

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

如果您想了解更多关于javascript中regex的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

反复去掉最里面的括号表达式:

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对此进行解析,并分析生成的解析树。