如何用正则表达式消除 url 参数的结尾?

How to dismiss the end of the url parameters with regex?

我有一个脚本应该在打开某个页面路径时触发。

问题:页面路径包含多个参数,包括参数“returnUrl”,返回上一个访问过的页面。

这是我要检查的 url :

/cxsSearchApply?positionId=a0w0X000004IceYQAS&lang=en&returnUrl=https://example.com/cxsrec__cxsSearchDetail?id=a0w0X000004IceYQAS&lang=en&returnUrl=https://example.com/cxsrec__cxsSearch&lang=en

我最初使用此正则表达式代码在此页面上触发:

(cxsSearchApply.*)

但我还有其他正则表达式代码,例如:

(cxsSearchSearchDetail.*)

它们也会因为 url...

中包含的页面路径而触发

我应该使用什么正则表达式来匹配 url 的第一部分,但在“returnUrl”之后什么都不匹配?

Nothing after "returnUrl"

如果这确实是您想要的,您可以简单地执行 (.*)(&returnUrl=.*) 并将第一个捕获组作为结果。

所以你想在 &returnUrl 之前匹配文本 cxsSearchApply。您可以使用前瞻:

(cxsSearchApply.*)(?=returnUrl=)

然而,您真正想要的是匹配 first &returnUrl 之前的所有内容。所以你需要一个非贪婪运算符:

(cxsSearchApply.*?)(?=returnUrl=)

同样,对于您的其他搜索,它应该不再匹配,因为它也只查看第一部分:

(cxsSearchSearchDetail.*?)(?=returnUrl=)

我相信这会让你得到你想要的。