Ruby on rails 子域上的Rails路由约束与正则表达式路由不匹配

Ruby on rails 子域上的Rails路由约束与正则表达式路由不匹配,ruby-on-rails,regex,Ruby On Rails,Regex,我有一条路线如下所示: match '/', to: 'browse#city_companies', constraints: { subdomain: /[a-z\-]+-[a-z]{2}/ }, :via => [:get] 约束中使用的regex/[a-z\-]+-[a-z]{2}/将匹配例如:“伯明翰al”,但不匹配“南卡罗来纳”。这就是我想要达到的行为 然而,rails在“伯明翰艾尔”和“南卡罗来纳”都使用这条路线,这不是我想要的。我做错了什么?您忘了使用字符串结尾字符: /

我有一条路线如下所示:

match '/', to: 'browse#city_companies', constraints: { subdomain: /[a-z\-]+-[a-z]{2}/ }, :via => [:get]
约束中使用的regex
/[a-z\-]+-[a-z]{2}/
将匹配例如:“伯明翰al”,但不匹配“南卡罗来纳”。这就是我想要达到的行为


然而,rails在“伯明翰艾尔”和“南卡罗来纳”都使用这条路线,这不是我想要的。我做错了什么?

您忘了使用字符串结尾字符:

/[a-z\-]+-[a-z]{2}\z/

路线可以是:

get '/', to: 'browse#city_companies', constraints: { subdomain: /[a-z\-]+-[a-z]{2}\z/ }

将字符串结尾字符添加到regexp-
。[a-z]{2}$/
。[a-z]{2}\z/
哇,我是个白痴。这就解决了问题。谢谢如果你把这个作为答案,我可以结束这个问题。或者我应该删除你的电话@yoavmatchulsky
get '/', to: 'browse#city_companies', constraints: { subdomain: /[a-z\-]+-[a-z]{2}\z/ }