Prosty regexp w Ruby

Hej

Chce napisać prosty regexp do sprawdzania kodu państwa w Ruby.

Czy ktoś może mi wytlumaczyć dlaczego to działa?

[code]!!(/+\d{2,4}/ =~ “+48”)

=> true[/code]

A to nie?

[code]!!(/+([d]{2,})/ =~ “+48”)

=> false[/code]

Z kolei jeśli skorzystamy z gwiazdki (*), zamiast z klamer ({}), to regexp działa.

[code]!!(/+([d]*)/ =~ “+48”)

=> true[/code]

Ogólnie jakieś takie kłopotliwe te klamry => {}

W regułce masz “[d]”, czyli oczekujesz dokładnie litery “d” 2 lub więcej razy. Powinno być “[\d]”, co zwraca true…

irb(main):005:0> !!(/\+([\d]{2,})/ =~ "+48") => true

Rzeczywiście… ok dzięki.