首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配rails的Regex获取索引urls

匹配rails的Regex获取索引urls
EN

Stack Overflow用户
提问于 2017-12-04 11:03:55
回答 3查看 127关注 0票数 1

我正在尝试创建一个regex,以便只匹配rails中的索引urls (有或没有参数)。

以下三个与我所期望的相匹配:

代码语言:javascript
复制
regex = /^http:\/\/localhost:3000\/v2\/manufacturers\/?(\S+)?$/
regex.match?('http://localhost:3000/v2/manufacturers?enabled=true')
#=> true
regex.match?('http://localhost:3000/v2/manufacturers/')
#=> true
regex.match?('http://localhost:3000/v2/manufacturers')
#=> true

我希望正则表达式与这些不匹配:

代码语言:javascript
复制
regex.match?('http://localhost:3000/v2/manufacturers/1')
#=> true
regex.match?('http://localhost:3000/v2/manufacturers/123')
#=> true
regex.match?('http://localhost:3000/v2/manufacturers/1?enabled=true')
#=> true

编辑:

我很抱歉,但我忘了说它应该是匹配的:

代码语言:javascript
复制
regex.match?('http://localhost:3000/v2/manufacturers/1/models')

因为它是一个有效的索引url。

EN

Stack Overflow用户

回答已采纳

发布于 2017-12-04 11:06:44

你可以用

代码语言:javascript
复制
/\Ahttp:\/\/localhost:3000\/v2\/manufacturers(?:\/?(?:\?\S+)?|\/1\/models\/?)?\z/

Rubular演示

模式细节

  • \A -字符串的开始
  • http:\/\/localhost:3000\/v2\/manufacturers -一个http://localhost:3000/v2/manufacturers字符串
  • (?:\/?(?:\?\S+)?|\/1\/models)? -一个可选的序列:
    • \/? -一个可选的/字符
    • (?:\?\S+)? - ?和1+非空格的可选序列
    • | -或
    • \/1\/models\/? - /1/models字符串和末尾的可选/

  • \z -字符串的末端。
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47631890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档