为了从URL中提取出斜杠(/)之间的值,并且这些值匹配给定的正则表达式模式,你可以使用JavaScript的match方法与正则表达式结合。
首先,你需要构建一个正则表达式,该表达式能够匹配斜杠之间的任意字符序列,并且捕获这些序列。然后,你可以使用match方法来应用这个正则表达式,并提取出匹配的部分。
在你的例子中,你可以这样构建正则表达式:
- 由于你要匹配的字符串模式是
{note}/:pakid:/corrinsdetail/{corrInsAleid}/{corrInsPakId}/{corrInsInsta}/{corrInsVernr}/{verFrom}/{verTo}/{name}:tab:,并且你想要提取note和pakid的值,你可以创建一个正则表达式,它匹配{note}后面的内容,直到第一个/,以及:pakid:后面的内容,直到下一个/。 - 注意,由于你的模式字符串中
{note}和:pakid:是固定的,并且它们之间有一个斜杠,你可以直接使用这些作为匹配模式的一部分。
下面是完成这个任务的JavaScript代码:
let pattern = "{note}/:pakid:/corrinsdetail/{corrInsAleid}/{corrInsPakId}/{corrInsInsta}/{corrInsVernr}/{verFrom}/{verTo}/{name}:tab:";
let url = "0001668882/41/corrinsdetail/0001023444/41/0020751259/0005/756/756/SAP_BASIS/ValidityDetails";
// 构建正则表达式
let regex = new RegExp(pattern.replace(/\{\w+\}|:\w+:/g, '([^/]+)'), 'g');
// 提取匹配的值
let matches = url.match(regex);
// 解析匹配的结果到对应的变量
let note = matches[0];
let pakid = matches[1];
console.log("note = “" + note + "”");
console.log("pakid = “" + pakid + "”");
在这段代码中,RegExp构造函数用于创建一个正则表达式对象,其中pattern.replace(/\{\w+\}|:\w+:/g, '([^/]+)')将{note}和:pakid:替换为([^/]+),这表示匹配一个或多个非斜杠字符的序列。g标志表示全局匹配,即匹配所有出现的模式,而不仅仅是第一个。
然后,url.match(regex)方法用于在URL字符串中查找所有与正则表达式匹配的子字符串,并将它们作为数组返回。
最后,matches[0]和matches[1]分别包含note和pakid的值,这些值被提取并打印出来。
代码
代码显得有点长,为了兼容异常情况,
?zz=23423或者#abc,需要清洗url中如果含有
-也要兼容,不仅仅是_和数字、字母输出结果
