gpt4 book ai didi

java - 通过正则表达式验证 URL 查询参数是否存在

转载 作者:行者123 更新时间:2023-11-30 07:34:33 30 4
gpt4 key购买 nike

我想通过某些查询参数的存在来验证 URL。例如,我想验证以 /questions 开头的 URL 字符串,前提是它具有查询字符串参数 previousnext

我可以想出这个解决方案:/questions\?(previous|.+&previous)=.*&next=.*如果 previous 参数放置在 next 参数之前,则可以验证此 URL。

您能告诉我是否有一种优雅的方法(无需制作或类似 ((previous|.+&previous)=.*&next=.*|(next|.+&next)=. *&previous=.*) )编写此正则表达式,使其与 previousnext 参数的顺序无关,而无需 ?

最佳答案

首先,您可以通过消除不必要的交替并将其替换为可选组来缩短当前的正则表达式:

(previous|.+&previous) ===> (?:.+&)?previous=
^^^^^^^^

(?:.+&)?previous= 匹配除换行符之外的一个或多个字符的一个或零个序列,后跟 & (因此,这可以字符串中存在或不存在),然后是 previous=

接下来,您可以强加两个前瞻,这将需要 previousnext 参数:

/questions[?](?=(?:.+&)?previous=)(?=(?:.+&)?next=)
^^^ ^^^^ ^

请参阅regex demo

如果在字符串中的当前位置之后找不到这些 (?=...) 构造(正向前瞻)的子模式,则匹配失败。因此,前一个和下一个参数都必须位于字符串中才能匹配字符串。参数的顺序并不重要,因为前瞻是在字符串中的同一位置执行的,它们不消耗字符。

关于java - 通过正则表达式验证 URL 查询参数是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584057/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com