in reply to Regular expression matching when it shouldn't
Your regular expression does match because it is really present inside the string:
"[someRandomName]." (The text in bracket is the matched text)
"[someRandomName]-"
What you want is anchoring the regular expression. Try adding a '^' at the beginning and a '$' at the end of the regular expression. The Regex will then try to match against the whole string, and not only on a part of it:
/^[A-Z0-9]+[A-Z0-9-]+[A-Z0-9]{1}$/iHope this helps. See perlre for more infos about this
<kbd>--#!/usr/bin/perl -w use strict; my $domain = $ARGV[0]; print "Got $domain\n"; if ($domain =~ /^[A-Z0-9]+[A-Z0-9-]+[A-Z0-9]$/i) { print "$domain matched\n\n"; } else { print "$domain did not match\n\n"; } __END__ Got someRandomName. someRandomName. did not match Got someRandomName- someRandomName- did not match Got someRandomName someRandomName matched Got someRandomName-X someRandomName-X matched Got someRandomName-Foo someRandomName-Foo matched
|
|---|