in reply to Simple regex question

Almost exactly the way you described it:

print "$_: ", /^\w+$/ && !/^\d+$/ ? 'Good' : 'Bad' for qw[ abc a1c 1b3 + 123 ];; abc: Good a1c: Good 1b3: Good 123: Bad

Or if you insist on a single regex:

print "$_: ", /^(?=.*[a-zA-z])\w+$/ ? 'Good' : 'Bad' for qw[ abc a1c 1 +b3 123 ];; abc: Good a1c: Good 1b3: Good 123: Bad

Though it is doubtful if it is any more efficient; and is certainly less clear.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong