【问题标题】:JS - Regexp to match slug in url if anyJS - 正则表达式匹配 url 中的 slug(如果有)
【发布时间】:2016-10-04 01:32:38
【问题描述】:

有什么有效/好的方法来匹配 URL 中的 slug 吗?

例如:

匹配:

  • http://somepage.com/s/XXXXX/this-is-slug-i-want
  • http://somepage.com/s/XXXXX/this-is-slug-i-want/
  • http://somepage.com/s/XXXXX/this-is-slug-i-want?foo=bar
  • http://somepage.com/s/XXXXX/this-is-slug-i-want#foo

不匹配:

  • http://somepage.com/s/XXXXX/somePage.html 和类似的(.php 等)

【问题讨论】:

  • 在 Stack Overflow 上提问之前,请至少尝试解决方案。我们不是代码编写服务。另外,正如How to Ask 中所说,请在询问之前进行研究,关于这个主题有很多问题。
  • 我会选择.*this-is-slug-i-want.*
  • 这很不清楚。您希望字符串与正则表达式匹配吗?你想比较最后一个蛞蝓吗?你想完成什么?
  • @sin 这是不正确的,该正则表达式将匹配 http://this-is-slug-i-want.comhttp://somepage.coms/XXXXX/somePage.html?this-is-slug-i-want 以及 OP 绝对不想要的大量其他内容

标签: javascript regex


【解决方案1】:

这个怎么样...

http:\/\/somepage.com\/s\/XXXXX\/(?!.*\.html).*

测试:http://rubular.com/r/KyTWM1fizJ

【讨论】:

  • 这将匹配http://somepage.com/s/XXXXX/literally-anything-without-.html-in-it 形式的任何内容,而不是发帖人要求的内容。
  • 另外两个选项... http:\/\/somepage.com\/s\/XXXXX\/(?!.*\.(html|php)).*http:\/\/somepage.com\/s\/XXXXX\/(?!.*\..*).*
  • 再一次,这不是发帖人所要求的。他们想要一些他们想要匹配的 slug 但不是其他页面的东西。他们从来没有说过 slug 不能有 .html.php 或任何其他你可以在其中掀起的扩展。你的只匹配没有特定后缀的任何页面,而不是海报要求的单个所需的 slug。
  • 因为您似乎真的希望您的解决方案能够正常工作,所以这里有一个您的解决方案失败的示例。 rubular.com/r/9bX47v2vJB
  • 显然我对 OP 想要什么感到困惑。在我看来,OP 正在尝试查找以文件夹或查询字符串结尾而不是以文件名结尾的 URL——我认为我的正则表达式可以做到这一点,但也许这不是 OP 想要的——我承认自己是个坏通灵者。
【解决方案2】:

为什么不/^http:\/\/.+\/this-is-the-slug-i-want\/?(\?.*)?/

【讨论】:

  • 这个[\?[.*]?]?应该是:(\?.*?)?
  • 哈哈一定,谢谢!虽然刚刚意识到你不需要第二个? ;)
  • 那不是我说的,[.*] 将匹配文字句点 (.) 或文字星号 *
  • 哎呀!也打算删除那些:P 我的意思是在你的,你可以只做 (\?.*)? 而不是 (\?.*?)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多