我有以下模式中的一些字符串'walkPath(left, down, left)'为了单独提取函数名称和另一个数组中的参数,我使用了这些正则表达式:const str = 'walkPath(left, down, left)'const functionNameRegex = /[a-zA-Z]*(?=\()/console.log(str.match(functionNameRegex)) //outputs ['walkPath'] ✅✅const argsRegex = /(?![a-zA-Z])([^,)]+)/gconsole.log(str.match(argsRegex)) //outputs [ '(left', ' down', ' left' ] 第一个工作正常。在第二个正则表达式中,'(' 来自 '(left' 应该被排除,所以它应该是 'left'
2 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
试试这个:
/(?<=\((?:\s*\w+\s*,)*\s*)\w+/g
const str = 'walkPath(left, down, left)'
const functionNameRegex = /[a-zA-Z]*(?=\()/
console.log(str.match(functionNameRegex))
const argsRegex = /(?<=\((?:\s*\w+\s*,)*\s*)\w+/g
console.log(str.match(argsRegex))
不是很受限制,如果你真的想要安全,你可以试试:
/(?<=\w+\s*\((?:\s*\w+\s*,\s*)*\s*)\w+(?=\s*(?:\s*,\s*\w+\s*)*\))/g
ITMISS
TA贡献1871条经验 获得超8个赞
使用此正则表达式获取参数:
const argsRegex = /\(\s*([^)]+?)\s*\)/
获取数组中的参数:
const str = 'walkPath(left, down, left)'
const argsRegex = /\(\s*([^)]+?)\s*\)/
let res = str.match(argsRegex)
let args = res[1].split(", ")
添加回答
举报
0/150
提交
取消