【问题标题】:Regex expressions help - query strings正则表达式帮助 - 查询字符串
【发布时间】:2011-10-11 18:09:56
【问题描述】:

谁能给我正则表达式来验证带有 2 个参数的查询字符串的 URL

http://www.example.com?pid=3&sid=4 

我想验证输入是否与上面的 URL 和确切的参数匹配,我如何为此编写正则表达式

提前致谢!

【问题讨论】:

  • 只比较两个字符串?为什么需要正则表达式来进行 exact 匹配?

标签: regex query-string


【解决方案1】:
^(http://)?(www\.)?[0-9A-z]+\.com\?pid=(?<pid>\d+)&sid=(?<sid>\d+)$

【讨论】:

  • 如果 url 有一个尾部斜杠,即http://www.abc.com/?pid=3&amp;sid=4,则不会匹配,也不会匹配https。不确定这些是否是要求。
  • @Jeff 用于 https 和斜杠:^(https?://)?(www\.)?[0-9A-z]+\.com/?\?pid=(?&lt;pid&gt;\d+)&amp;sid=(?&lt;sid&gt;\d+)$
  • 感谢您的回复,我的实际要求是 abc.com/test/default.aspx?tid=1&sid=2 - 这里的参数值是确切的数字 - 所以我将上面的正则表达式更改为 "^(http://)?(www\ .)?[0-9A-z]+[0-9A-z]+\.com\?tid=1+&sid=2+$" - 但它没有用,你能告诉我更正吗..跨度>
  • ^(https?://)?(www\.)?[0-9A-z]+\.com/[0-9A-z]+/[0-9A-z]+\.aspx\?pid=(?&lt;pid&gt;\d+)&amp;sid=(?&lt;sid&gt;\d+)$ 将匹配 abc.com/test/default.aspx?pid=1&amp;sid=2
【解决方案2】:
^https?://(www\.)?((?!-)[a-z0-9-]+(?<!-)\.)+\w{2,6}/\w+/(default\.aspx)?\?pid=\d+&sid=\d+$

将匹配:

http://www.domain.tld/directory/?pid=123&sid=123
http://www.domain.tld/directory/default.aspx?pid=123&sid=123
http://www.sub-domain.domain.tld/directory/?pid=123&sid=123
http://www.sub-domain.domain.tld/directory/default.aspx?pid=123&sid=123

以及没有www. 的网址和使用https 作为协议的网址。

【讨论】:

    【解决方案3】:

    假设 pidsid 是静态的。

    pid=(.*)&sid=(.*)
    

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      相关资源
      最近更新 更多