# Routes.rb: regular expression /i (case insensitive) doesn't work?

**URL:** <https://www.ruby-forum.com/t/routes-rb-regular-expression-i-case-insensitive-doesnt-work/134693>\
**Category:** Rails\
**Created:** [April 14, 2008, 5:17am UTC](https://www.ruby-forum.com/t/routes-rb-regular-expression-i-case-insensitive-doesnt-work/134693 "2008-04-14T05:17:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![akira](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ba8739/32.png) [@akira](https://www.ruby-forum.com/u/akira)\
**Post date:** [April 14, 2008, 5:17am UTC](https://www.ruby-forum.com/t/routes-rb-regular-expression-i-case-insensitive-doesnt-work/134693/1 "2008-04-14T05:17:18Z")

</div>

Dear all,

I have something like this in routes.rb:

map.connect ‘:test’, :controller =\> ‘help’, :requirements =\> { :test  
=\> /apple/i }

But then, the routing for URL “/apple” works but “/APPLE” does not!

Why doesn’t the i-for-case-insensitive work? Is this by-design or a  
bug?

Thanks for any advice,  
AK

---

<div class="post-metadata">

**Author:** ![akira](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ba8739/32.png) [@akira](https://www.ruby-forum.com/u/akira)\
**Post date:** [April 14, 2008, 9:57am UTC](https://www.ruby-forum.com/t/routes-rb-regular-expression-i-case-insensitive-doesnt-work/134693/2 "2008-04-14T09:57:24Z")

</div>

Akira wrote:

> map.connect ‘:test’, :controller =\> ‘help’, :requirements =\> { :test  
> =\> /apple/i }
> 
> But then, the routing for URL “/apple” works but “/APPLE” does not!

Because Rails doesn’t use the regular expression as-is. It decides that  
you always want the expression to be anchored at the start and end. The  
code used is:

requirement\_conditions = requirements.collect do |key, req|  
if req.is\_a? Regexp  
value\_regexp = Regexp.new “\A#{req.source}\Z”

So only the source string of your regular expression is used.
