javascript - 正则表达式提取括号和函数名称

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

相关文章:

javascript - Pubnub 存在限制为 20

javascript - 什么是显式 promise 构造反模式以及如何避免它?

c++ - Qt 验证器正则表达式

regex - sed(或awk)正则表达式来替换匹配的子字符串

c# - 我如何使用 LINQ 和字符串解析来完成这个示例?

javascript - 为什么 Date.parse 不返回 Date 对象?

javascript - 在 JavaScript 中,当一次声明多个变量时,只使用一个 var 语句是否有内存优势?

regex - 如何解决“替换字符串”方法区分大小写的问题?

javascript - 分割字符串以创建 HTML 链接

javascript - 保留 int.toString() 中的前导零