有人帮我为以下情况编写正则表达式
- somestring() =>
['somestring']
- somestring()[10] =>
['somestring','',10]
- somestring('argString') =>
['somestring', 'argString']
- somestring('argString')[10] =>
['somestring', 'argString',10]
somestring({prop1:'v1',prop2:'v2'}) =>
['somestring', {prop1:'v1',prop2:'v2'}]
somestring({prop1:'v1',prop2:'v2'})[100] =>
['somestring', {prop1:'v1',prop2:'v2'},100 ]
这是我到目前为止尝试过的
var regExp = /\b[^()]+\((.*)\)+\[(.*?)]/;
var matches = regExp.exec('somestring()[10]');
最佳答案
这可行:
var input = ['somestring()', 'somestring()[10]', "somestring('argString')", "somestring('argString')[10]", "somestring({prop1:'v1',prop2:'v2'})", "somestring({prop1:'v1',prop2:'v2'})[100]"];
console.log(input.map(function(v) {
let result = v.match(/(.*)\((.*)\)(\[([^\]]*)\])?/);
return [result[1], result[2], result[4]];
}));
关于javascript - 正则表达式提取括号和函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776900/