Javascript 验证URL,但允许在参数中使用占位符字符串

Javascript 验证URL,但允许在参数中使用占位符字符串,javascript,regex,Javascript,Regex,我看了这个问题: 投票最多的答案是这个正则表达式: ^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}和${s

我看了这个问题:

投票最多的答案是这个正则表达式:

^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)。这些稍后将替换为实际值,因此最终url如下所示:

http://www.cool.com:81/index.html?query=helloworld&sortBy=population
我一直在玩正则表达式,看看是否可以添加一个条件,允许使用这些占位符,但不幸的是,我的尝试都没有成功

我该怎么做

编辑:

提供的重复问题并没有回答如何匹配
${query}
,而是只包含参数的特定URL

^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)\?query=([a-z]+)&sortBy=([a-z]+)$
第3组中,您有您的
查询
,在第4组中,您的
排序

请看这里:


^https?:\/\/(www\)?[-a-zA-Z0-9:%.[-a-zA-Z0-9:%.[-a-z]{2256}.[a-z]{2,4}\b(((?:[-a-zA-Z0-9:%.-+.-/=$\\\\\\\\\\}*)*)$$/code>=${sortBy&