On Aug 6, 2008, at 10:26 AM, David Nguyen wrote:

> Hi,
> I need a regular expression for a filename :
> it must be composed with the following letters :
>
> a to z
> A to Z
> 0 to 9
> dash sign -
> underscore sign _
>
> then how can I compare a string with it :
>
> mystring =~ /myregex/ #return true or false
>
> does it works like that ?

Yes.  Although String#=~ returns the position the match starts, or nil  
if there is no match. If the right-hand-side is not a Regexp, invokes  
obj.=~, passing str as an argument. The default =~ in Object returns  
false.

Since a Fixnum is not nil or false, it will be "true" and both nil and  
false will be "false".

The only other issue is that the dash (hyphen-minus; '-') is special  
inside a character class of regular expressions.  For example, if you  
wanted to match a dash or digit, you could use /[-0-9]/ so the -  
appearing first is not treated as a character range operation.

-Rob

Rob Biedenharn		http://agileconsultingllc.com
Rob / AgileConsultingLLC.com