You have:
as your regex. I'm guessing that you want to match at least three alphanumeric characters. (I'd write this as/[A-Z0-9]+[A-Z0-9]+[A-Z0-9]{1}/i
or/[A-Z0-9]{3,}/i
if you don't mind matching _s as well.)/\w{3,}/
Anyways, you're getting matches that you don't expect because m// matches substrings, not whole lines. So, if you give this regex a string with at least three consecutive alphanumerics, it'll match regardless of what else is in the string. If you want to match only alphanumerics, you want something like this:
or, much more concisely:/^ # match the start of the line [A-Z0-9]{3,} # match at least 3 alnums, beginning at the start of the + line $ # match the end of the line -- we've only matched alnums /xi;
If you're going to be writing a lot of perl, I strongly suggest that you learn regexes well. Mastering Regular Expressions is, IMO, the best book for the job; the Camel book also has some good stuff. You might find Steve Litt's tutorial useful as well. --/^[A-Z0-9]{3,}$/i;
In reply to Re: Regular expression matching when it shouldn't
by FoxtrotUniform
in thread Regular expression matching when it shouldn't
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |