使用正则表达式匹配函数名称和参数

我有以下模式中的一些字符串


'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])([^,)]+)/g

console.log(str.match(argsRegex)) //outputs [ '(left', ' down', ' left' ] 


第一个工作正常。在第二个正则表达式中,'(' 来自 '(left' 应该被排除,所以它应该是 'left'


收到一只叮咚
浏览 337回答 2
2回答

猛跑小猪

试试这个:/(?<=\((?:\s*\w+\s*,)*\s*)\w+/gconst str = 'walkPath(left, down, left)'const functionNameRegex = /[a-zA-Z]*(?=\()/console.log(str.match(functionNameRegex))const argsRegex = /(?<=\((?:\s*\w+\s*,)*\s*)\w+/gconsole.log(str.match(argsRegex))不是很受限制,如果你真的想要安全,你可以试试:/(?<=\w+\s*\((?:\s*\w+\s*,\s*)*\s*)\w+(?=\s*(?:\s*,\s*\w+\s*)*\))/g

ITMISS

使用此正则表达式获取参数:const argsRegex = /\(\s*([^)]+?)\s*\)/获取数组中的参数:const str = 'walkPath(left, down, left)'const argsRegex = /\(\s*([^)]+?)\s*\)/let res = str.match(argsRegex)let args = res[1].split(", ")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript