所以我尝试了这个正则表达式:

$email = '';
preg_match('<.*?>', 'sadfas<email@email.com>', $email);
echo $email[0];

目标结果是提取“email@email.com”,因为它位于符号之间...但是它没有用...

我做错什么了?

最佳答案

您忘记了正则表达式定界符(/是流行的定界符)。您还应该使用子模式仅匹配地址,而不匹配<>:

preg_match('/<(.*?)>/', 'sadfas<email@email.com>', $email);
echo $email[1];

或者,您可以先行回顾并向后看,以避免使用子模式:
preg_match('/(?<=<).*?(?=>)/', 'sadfas<email@email.com>', $email);
echo $email[0];

08-18 15:01
查看更多