【问题标题】:Validate URL but allow placeholder strings in parameters验证 URL,但允许在参数中使用占位符字符串
【发布时间】:2018-04-19 20:27:30
【问题描述】:

我看了这个问题:

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@:%_\+.~#?&//=]*)$

这非常适合验证 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},而是回答了只有参数的特定网址。

【问题讨论】:

  • ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b((?:[-a-zA-Z0-9@:%_\+.~#?&//=\$\{\}])*)$
  • @dfsq:当=${sortBy}&&}}}}}}$$$$$ 时,此正则表达式将不起作用
  • @TanDuong 我知道,但我不回答问题。原始的正则表达式不好开始。
  • @IgnacioAra 我看不出这是该问题的重复。我问的是完全不同的事情。

标签: javascript regex


【解决方案1】:
^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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多