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

时间:2018-04-19 09:25:43

标签: javascript regex

我看了这个问题:

What is a good regular expression to match a URL?

并采取了最正式的答案,即这个正则表达式:

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

这非常适合验证网址,但是,我还需要这个以允许这样的字符串:

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},而是回答具有参数的特定网址。

1 个答案:

答案 0 :(得分:0)

^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