收到一只叮咚
2023-05-11 14:00:41
我有以下模式中的一些字符串'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
提交
取消