in reply to Regular Expression Help

Your missing the anchors, and the /g, the /i and the parens are unnecessary:

/^\w+\.\w{3}$/

But that's not perfect because \w allows for digits, so:

/^[a-zA-Z_]+\.[a-zA-Z_]{3}$/

To allow filenames with no extention or with extentions short than 3 characters:

/^[a-zA-Z_]+(?:\.[a-zA-Z_]{0,3})?$/

Replies are listed 'Best First'.
Re^2: Regular Expression Help
by Anonymous Monk on Jan 06, 2006 at 16:32 UTC
    One of my problems is not to allow file names without extentions and with no less than 3 characters.
      No problem. Just use the second snippet instead of the third one.
      How do I say match anything but not allow spaces between words? Like:
      if($filename=~/.*!\s[.](?!bat$|exe$).*$/gi){...
      This is not working if I use .*!\s

        ikegami's second regular expression will still do what you want.

        This only allows the characters a-z (upper and lower case) for the file name and an extension of 3 of the same characters. No spaces allowed, no weird characters.
        My recommendation is to use this one.

        Also, for general questions on regex, take a look at perlre. This will answer many of your questions and broaden your overall understanding of regular expressions.