Perl Regex匹配字符串直到空格

时间:2013-11-29 21:35:50

标签: regex string perl

我有一个简单的电子邮件验证正则表达式来创建。

目前我有这个:

#! /usr/bin/env perl

print "mail from: ";
my $mail_from = lc(<STDIN>);

if ($mail_from =~ /(([^@]+)@(.+))/) {
  $mail_from = $1; 
  print $mail_from;
  print "250 OK\n";
}
else{
  print "550 ERROR \n";
}

但问题是我可以在.com之后输入各种字符 me@gmail.com blabla

如何匹配字符串直到第一个空格?

此致

4 个答案:

答案 0 :(得分:3)

也许尝试这样的模式:

/(([^@]+)@(\S+))/

\S将匹配任何非空格字符。

答案 1 :(得分:1)

正则表达式中的.匹配任何和所有字符,包括空格。请尝试使用\S,它匹配任何非空格。

答案 2 :(得分:0)

使用\S匹配非空格,您可以使用不情愿的(非贪婪的)量词来略微简化上一个术语:

/((.*?)@(\S+))/

答案 3 :(得分:0)

你的正则表达式中肯定不需要三个捕获吗?

你可能也希望在@之前和之后避免使用尖括号。

我建议至少这个

/([^<>@\s]+\@[^<>@\s]+)/