验证 URL,但允许参数中的占位符字符串



我看了这个问题:

什么是匹配 URL 的良好正则表达式?

并采用了投票最多的答案,即这个正则表达式:

^https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&//=]*)$

这对于验证 url 非常有用,但是,我还需要它来允许这样的字符串:

http://www.cool.com:81/index.html?query=${query}&sortBy=${sortBy}

请注意占位符字符串,例如 ${query}${sortBy}(括号内可以有任何字母 a-z(。这些稍后会替换为实际值,因此最终网址将如下所示:

http://www.cool.com:81/index.html?query=helloworld&sortBy=population

我一直在使用正则表达式,看看我是否可以添加一个允许这些占位符的条件,但不幸的是,我的尝试都没有成功。

我该怎么做?

编辑:

提供的重复问题没有回答如何匹配${query}而是回答只有参数的特定网址。

^https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,4}b([-a-zA-Z0-9@:%_+.~#?&//=]*)?query=([a-z]+)&sortBy=([a-z]+)$

在第 3 组中,您有您的query,在第 4 组中,您有您的sortBy

在这里看到它:

https://regex101.com/r/2pw8Yh/1

最新更新