in reply to Regular expression query
for ( 'A_TAG_HSSL_LBA_1', 'A_TAG_HSSL_LBAB_1' ) { if( ! /A_[A_Z0-9_]+/i) { print "$_ is not matching\n"; } else { print "$_ matches\n"; } }
Produces:
A_TAG_HSSL_LBA_1 matches A_TAG_HSSL_LBAB_1 is not matching
I think the regexp is matching somewhere other than where you think it's matching. A_TAG_HSSL_LBA_1 is matched at A_1, not at the start.
I suspect the regexp you're after is really
/^ # start of string A_ # must start "A_" [A-Z0-9_]+ # at least one capital, digit or underscore $ # end of string /ix # allow spaces and comments inside regexp # and ignore case
Or, /^A_[A-z0-9_]+$/i in short. But, since you're ignoring case (which I just noticed), [A-Z0-9_] are just "word" characters, so your regexp reduces to: /^A_\w+$/i
Of course, this is all guesswork, so it could well be all wrong.
|
|---|