使用单个正则表达式行(这在应用程序的配置文件中)我需要捕获电子邮件地址的本地部分。
如果它只包含数字,则不加修改地传递它。如果上面有任何非数字字符,则最多截断为 11 个字符。
我做了这个简单的程序来测试,但如果 localpart 超过 11 个字符,则不匹配(打印整个电子邮件地址)。
#!/usr/bin/env perl
my @emails = ('the-chuck.t1.norrisson@chuck.com', '358451399991@chucksphon.com', 'ph33t@gmail.com', 'the-average.guyisbald@example.com', 'alongnameit@11chars.com', 'alongnameitis@13chars.com', 'a1234567890@11charnum.com');
for my $email (@emails){
# will put $1$2 on the substituion spot
$email =~ s/^(\d+)@.+|^([a-zA-Z0-9._%+-]{1,11})@.+/ /;
print '===> ' . $email . " \n\n ";
}
我哪里错了?