sgm は何をしようとしているのか、あなたは何をしているのか
/^[:alnum:]+\@\:(\/[:alnum:]+)*$/
どこでやるべきか
/^[[:alnum:]]+\@\:(\/[[:alnum:]]+)*$/
Pax の回答も実用的ですが、適切な二重括弧がないと機能しません。
my $at = q{@};
my @res = (
qr/^[:alnum:]+${at}[:alnum:]+:(\/[:alnum:]+)*$/,
qr/^[[:alnum:]]+${at}[[:alnum:]]+:(\/[[:alnum:]]+)*$/,
qr/^[a-z][[:alnum:]_]*${at}[a-z][[:alnum:]_.]*:(\/[^\/]*)*$/i,
);
my @u = qw{
user@hostname:/some/path
bob_foo@bobs.fish.stores.com:/foo/bar/baz/quux_
9foo@9foo.org:/9foo/9foo
baz@foo.org:/9foo/_#_numerics_are_fine_in_URI_and_so_is_anything_else_(virtually)
};
for my $str (@u) {
for my $re (@res) {
if ( $str =~ $re ) {
print "$str =~ $re\n";
}
else {
print "NOT $str =~ $re\n";
}
}
}
POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/^[:alnum:] <-- HERE +@[:alnum:]+:(/[:alnum:]+)*$/ at /tmp/egl.pl line 27.
POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/^[:alnum:]+@[:alnum:] <-- HERE +:(/[:alnum:]+)*$/ at /tmp/egl.pl line 27.
POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/^[:alnum:]+@[:alnum:]+:(/[:alnum:] <-- HERE +)*$/ at /tmp/egl.pl line 27.
NOT user@hostname:/some/path =~ (?-xism:^[:alnum:]+@[:alnum:]+:(/[:alnum:]+)*$)
user@hostname:/some/path =~ (?-xism:^[[:alnum:]]+@[[:alnum:]]+:(/[[:alnum:]]+)*$)
user@hostname:/some/path =~ (?i-xsm:^[a-z][[:alnum:]_]*@[a-z][[:alnum:]_.]*:(/[^/]*)*$)
NOT bob_foo@bobs.fish.stores.com:/foo/bar/baz/quux_ =~ (?-xism:^[:alnum:]+@[:alnum:]+:(/[:alnum:]+)*$)
NOT bob_foo@bobs.fish.stores.com:/foo/bar/baz/quux_ =~ (?-xism:^[[:alnum:]]+@[[:alnum:]]+:(/[[:alnum:]]+)*$)
bob_foo@bobs.fish.stores.com:/foo/bar/baz/quux_ =~ (?i-xsm:^[a-z][[:alnum:]_]*@[a-z][[:alnum:]_.]*:(/[^/]*)*$)
NOT 9foo@9foo.org:/9foo/9foo =~ (?-xism:^[:alnum:]+@[:alnum:]+:(/[:alnum:]+)*$)
NOT 9foo@9foo.org:/9foo/9foo =~ (?-xism:^[[:alnum:]]+@[[:alnum:]]+:(/[[:alnum:]]+)*$)
NOT 9foo@9foo.org:/9foo/9foo =~ (?i-xsm:^[a-z][[:alnum:]_]*@[a-z][[:alnum:]_.]*:(/[^/]*)*$)
NOT baz@foo.org:/9foo/_#_numerics_are_fine_in_URI_and_so_is_anything_else_(virtually) =~ (?-xism:^[:alnum:]+@[:alnum:]+:(/[:alnum:]+)*$)
NOT baz@foo.org:/9foo/_#_numerics_are_fine_in_URI_and_so_is_anything_else_(virtually) =~ (?-xism:^[[:alnum:]]+@[[:alnum:]]+:(/[[:alnum:]]+)*$)
baz@foo.org:/9foo/_#_numerics_are_fine_in_URI_and_so_is_anything_else_(virtually) =~ (?i-xsm:^[a-z][[:alnum:]_]*@[a-z][[:alnum:]_.]*:(/[^/]*)*$)