php - 我如何在 PHP 中运行这个正则表达式来解析带有名称的完整电子邮件地址?

标签 php regex

<分区>

我有这个正则表达式:

^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$

假设要解析包含名称和所有内容的完整电子邮件,我无法在 PHP 中运行它,请帮忙?

这是我尝试过的:

$test = "Joe Doe <doe@example.com>";
$emailRegex = '@^((?>[a-zA-Z\d!#$%&\'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&\'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$@';
preg_match($emailRegex, $test, $curResult);
print_r($curResult);

最佳答案

在 PHP 中你不需要像那样的怪物正则表达式,你可以只使用内置的验证器:http://www.php.net/manual/en/filter.examples.validation.php

例如,只有第一个echo会被执行:

<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "This ($email_a) email address is considered valid.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This ($email_b) email address is considered valid.";
}
?>

关于php - 我如何在 PHP 中运行这个正则表达式来解析带有名称的完整电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171549/

相关文章:

php - Redis 和大量的键

php - Codeception - 在 _beforeSuite 上进行 API 调用

regex - Perl:如何在文件中插入行?

JavaScript:解析奇数字符串以获取必要的信息(RegEx)

javascript - 寻找一行 JavaScript Regex 替换

javascript - jQuery 用 URL 替换字符串

php - 谷歌分析 API PHP

PHP 命名空间——更高效的核心功能?

php - 我如何在我的成功页面上知道客户paypal交易是否成功

正则表达式在文本中查找目录