有人帮我写以下情况的RegEx

  • 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 - RegEx提取括号和函数名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41776900/

    10-09 23:55
    查看更多