javascript - 正则表达式从字符串中提取重复序列

标签 javascript regex

我正在尝试从字符串 s 中提取函数参数

var s = "function (a, b,   c) { return \'hello\'; }";
var re = /^function[^\(]*\(\W*(?:(\w+)[,\s)]*)+\)/g;

console.log( re.exec(s) );

/*
[ 'function (a, b,   c)',
  'c',
  index: 0,
  input: 'function (a, b,   c) { return \'hello\'; }' ]
*/

问题

它仅捕获c

期望的输出

/*
[ 'function (a, b,   c)',
  'a',
  'b',
  'c',
  index: 0,
  input: 'function (a, b,   c) { return \'hello\'; }' ]
*/

免责声明

此代码在模块中使用,并且必须使用单个正则表达式来完成。 Other techniques我在 StackOverflow 上看到行不通。

最佳答案

在正则表达式中不能有可变数量的捕获组。你能做的最好的事情可能是:

var s = "function (a, b,   c) { return \'hello\'; }";
s.match(/.*?\((.*)\)/)[1].split(/[,\s]+/);

// returns ["a", "b", "c"]

关于javascript - 正则表达式从字符串中提取重复序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376312/

相关文章:

javascript - 如何对多个表单元素使用指令

javascript - Underscore.js 在嵌套数组中查找并返回元素

c# - 如何用 `someObject.ToString()` 替换所有出现的 `Convert.ToString(someObject);`

java - 如何排除模式匹配中的字符?

javascript - 正则表达式匹配有效的整数或小数(可以是正数或负数)

java - 用正则表达式测试字符串?

JavaScript 和 HTML : Event Listener Is Not Producing Text Alert As Expected; ReferenceError: button is not defined

javascript - 为什么 $watch 在没有任何变化的情况下触发 AngularJS?

javascript - 不使用乘法将两个数相乘

ios - 在 iOS Swift 上使用 RegEx 验证密码