INNER CODE UNIT · JavaScript
regexpMatch
cfug/flutter.cn · tool/host-redirect/src/index.js:82
const regexpMatch = pathToRegexp(redirect.source).exec(currentPath)
if (regexpMatch) {
let destination = redirect.destination
const params = parse(redirect.source)
for (let i = 0; i < params.length; i++) {
const { name, modifier } = params[i]
// 处理有命名的变量(类似 :name 、:name* 、:name? 等)
if (name) {
destination = destination.replaceAll(`:${name}${modifier}`, regexpMatch[i])
destination = destination.replaceAll(`:${name}`, regexpMatch[i])
}
// 处理未命名的变量
if (!name) {
destination = destination.replaceAll(`:${i}`, params[i])
}
}
return destination