为了从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中如果含有
-
也要兼容,不仅仅是_
和数字、字母输出结果