我在StackOverflow上环顾四周但找不到答案!
无论如何,我想知道如何在JavaScript中使用regexp。
我有一个字符串
bla().func1($(ele).attr("data")).func2.func3("test")... ;
我希望从给定的字符串中提取func1,func2,func3 ...,有没有人有一个如何做的例子?
请记住,函数名称会发生变化,所以它们不是func1,func2 ......它们可以加载,过去,月亮......等等
答案 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解析它并分析生成的解析树。