我看了这个问题:
什么是匹配 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