gpt4 book ai didi

javascript - 匹配函数参数

转载 作者:行者123 更新时间:2023-11-30 09:51:38 25 4
gpt4 key购买 nike

我一直在尝试创建一个匹配函数参数的正则表达式。

这是完整的示例(带 Debug模式):https://regex101.com/r/vM7xN1/1

我目前的正则表达式是这个:\(([^,\s\)]+)(?:\s*,\s*([^,\s\)]+)) *\)

以及我想要达到的匹配结果:

1. someFunc(param) => ['param']

2. someFunc(param, param2) => ['param', 'param2']

3. someFunc(param, param2, param3) => ['param', 'param2', 'param3']

4. someFunc(param, param2, param3, param4) => ['param', 'param2', 'param3', 'param4']

出于某种原因,这只能正确匹配 1、2 个函数。在函数 3 和 4 中,它只会匹配第一个参数和最后一个参数。

为什么它会跳过第一个和最后一个之间的参数?

编辑:附加测试:

'myFunction(param1, param2, param3)'.match(/(([^,\s)]+)(?:\s*,\s*([^,\s)]+))*)/) => ["(param1, param2, param3)", "param1", "param3"]

在没有非捕获组的情况下尝试时,我得到了这个:

'myFunction(param1, param2, param3)'.match(/(([^,\s)]+)(\s*,\s*([^,\s)]+))*)/) => ["(param1, param2, param3)", "param1", ", param3", "param3"]

任何帮助都会很棒。

谢谢!

最佳答案

只需使用一个简单的正则表达式来获取圆括号之间的所有内容并以逗号分隔:

>"someFunc(param, param2, param3, param4)".match(/(?:\()(.+)+(?:\))/)
["(param, param2, param3, param4)", "param, param2, param3, param4"]
>"someFunc(param, param2, param3, param4)".match(/(?:\()(.+)+(?:\))/)[1].split(/[\s,]+/)
["param", "param2", "param3", "param4"]

编辑:
我们还可以像这样过滤掉空元素(如果有的话):

>"someFunc( param , param2 , param3 )".match(/(?:\()(.+)+(?:\))/)[1].split(/[\s,]+/)
["", "param", "param2", "param3", ""]
>"someFunc( param , param2 , param3 )".match(/(?:\()(.+)+(?:\))/)[1].split(/[\s,]+/).filter(function(e){return e})
["param", "param2", "param3"]

关于javascript - 匹配函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com