如何在PHP中运行这个正则表达式?

如何在PHP中运行这个正则表达式?,php,regex,Php,Regex,我在线复制了一个复杂的PHP: [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 如何在PHP中运行它?我试试这个: $test = 'Joe Doe <doe@example.com>, postmaster@example.com, root, "

我在线复制了一个复杂的PHP:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
如何在PHP中运行它?我试试这个:

$test = 'Joe Doe <doe@example.com>, postmaster@example.com, root, "Bob Smith" <bob@smith.com>';
$regex = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/';
print preg_match_all($regex, $test , $matches);
print_r($matches);

您正在使用正斜杠
/
作为分隔符。由于在表达式中使用了
/
字符,因此需要使用反斜杠字符对其进行转义-因此,您需要编写
\/
,而不是
/

更正后的版本为:

$regex = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/';

您正在使用正斜杠
/
作为分隔符。由于在表达式中使用了
/
字符,因此需要使用反斜杠字符对其进行转义-因此,您需要编写
\/
,而不是
/

更正后的版本为:

$regex = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/';

我使用正则表达式处理工具。字符串实用程序可以为您完成所有这些

Delimeter可能性:

 ~

 '~[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?~'


 /

 '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/'


 @

 '@[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*\@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?@'


 <>

 '<[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?>'


 ;

 ';[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?;'


 #

 '#[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?#'
~
[a-z0-9![a-z0-9![a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9-]
/
“/[a-z0-9!{35;$%&\'*+\/=?^{{124}-]+(?:\.[a-z0-9!{35;$%&'*+\/=?^{{124}-]+)*([a-z0-9](?:[a-z0-9-]*[a-z0-9])+[a-z0-9]。+[a-z0
@
“@[a-z0-9!\$%&*+/=”(?:\.[a-z0-9!\\$%&*+/=”(?:[a-z0-9-].++-])*([a-z0-9](?:[a-z0-9-]*[a-z0-9])+[a-z0-9](?:[a-z0-9-].+[a-z0-9]。+[a-z0-9](?:[a-z0-9-]
''
;
';[a-z0-9![a-z0-9![a-z0-9![a-z0-9![a-z0-9]、[a-z0-9-][a-z0-9]、[a-z0-9]、[a-z0-9-][a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]。]
#
[a-z0-9!\\\\\$%&*+/=?(?:\.[a-z0-9!\\\\\\\\$%&*+/=?[a-z0-9](?:[a-z0-9-]*[a-z0-9-])+[a-z0-9](?:[a-z0-9-]

我使用正则表达式处理工具。字符串实用程序可以为您完成所有这些

Delimeter可能性:

 ~

 '~[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?~'


 /

 '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/'


 @

 '@[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*\@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?@'


 <>

 '<[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?>'


 ;

 ';[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?;'


 #

 '#[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?#'
~
[a-z0-9![a-z0-9![a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9-]
/
“/[a-z0-9!{35;$%&\'*+\/=?^{{124}-]+(?:\.[a-z0-9!{35;$%&'*+\/=?^{{124}-]+)*([a-z0-9](?:[a-z0-9-]*[a-z0-9])+[a-z0-9]。+[a-z0
@
“@[a-z0-9!\$%&*+/=”(?:\.[a-z0-9!\\$%&*+/=”(?:[a-z0-9-].++-])*([a-z0-9](?:[a-z0-9-]*[a-z0-9])+[a-z0-9](?:[a-z0-9-].+[a-z0-9]。+[a-z0-9](?:[a-z0-9-]
''
;
';[a-z0-9![a-z0-9![a-z0-9![a-z0-9![a-z0-9]、[a-z0-9-][a-z0-9]、[a-z0-9]、[a-z0-9-][a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]、[a-z0-9]。]
#
[a-z0-9!\\\\\$%&*+/=?(?:\.[a-z0-9!\\\\\\\\$%&*+/=?[a-z0-9](?:[a-z0-9-]*[a-z0-9-])+[a-z0-9](?:[a-z0-9-]

我通常建议使用另一个分隔符来避免转义它,但在这种情况下,字符串中几乎包含所有特殊字符@佩茨库科夫:的确。我也找不到任何这样的字符:-)我通常建议使用另一个分隔符来避免转义,但在这种情况下,您的字符串中几乎包含所有特殊字符@佩茨库科夫:的确。我也找不到这样的字符:-)我会非常小心使用你在网上找到的代码,而不了解它的实际功能。我完全同意,但这只是一个正则表达式,它可以工作,你知道,现实世界的时间压力,等等。你说“它工作”,但如果你不知道它是如何工作的,你怎么知道它能按你需要的方式工作?不要自欺欺人地认为这只是一个正则表达式。正则表达式是代码。可能重复@tripleee:不,这不是问题的重复。在这个问题中,OP试图从给定的文本中提取电子邮件地址,使用他在网上已经找到的正则表达式。这里的问题是regex在在线演示中起作用,但在使用PHP时不起作用。我会非常小心使用你在不了解它实际作用的情况下在网上找到的代码。我完全同意,但这只是一个regex,它起作用,你知道,现实世界的时间压力等等。你说“它起作用”,但如果你不知道它是如何工作的,你怎么知道它能按你需要的方式工作?不要自欺欺人地认为这只是一个正则表达式。正则表达式是代码。可能重复@tripleee:不,这不是问题的重复。在这个问题中,OP试图从给定的文本中提取电子邮件地址,使用他在网上已经找到的正则表达式。这里的问题是正则表达式可以在在线演示中使用,但在使用PHP时却不能。