Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regex获得拆分电子邮件部分预匹配_Php_Regex - Fatal编程技术网

Php Regex获得拆分电子邮件部分预匹配

Php Regex获得拆分电子邮件部分预匹配,php,regex,Php,Regex,我有这样一个固定的解释 $regex = '/(^info@)|(@onemore\.com)|(^someother@)|(@spam\.com)/i'; 我需要获取电子邮件字符串中的所有匹配项: 例如: 如果我有这样一封电子邮件: info@spam.com preg_match_all($regex, 'info@spam.com', $matches); 应该返回一个带有 1) info@ 2) @spam.com 但它只返回info@match 如果我喜欢这个,还有一个例子: p

我有这样一个固定的解释

$regex = '/(^info@)|(@onemore\.com)|(^someother@)|(@spam\.com)/i';
我需要获取电子邮件字符串中的所有匹配项: 例如:

如果我有这样一封电子邮件:

info@spam.com
preg_match_all($regex, 'info@spam.com', $matches);
应该返回一个带有

1) info@
2) @spam.com
但它只返回
info@
match

如果我喜欢这个,还有一个例子:

preg_match_all($regex, 'someother@spam.com', $matches);
结果应包含

1)someother@
2)@spam.com
有更多的组合,但这是一个预期的结果。
有什么建议吗?

使用积极的前瞻性断言来进行重叠匹配

(?=^(.*@))|(@.*)

如果你想要一个特定的解决方案,那么你可以使用这个

(?=^((?:info|someother)@))|(@spam\.com$)
从组索引1和2中抓取第一部分和第二部分


使用肯定的先行断言来进行重叠匹配

(?=^(.*@))|(@.*)

如果你想要一个特定的解决方案,那么你可以使用这个

(?=^((?:info|someother)@))|(@spam\.com$)
从组索引1和2中抓取第一部分和第二部分


使用肯定的先行断言来进行重叠匹配

(?=^(.*@))|(@.*)

如果你想要一个特定的解决方案,那么你可以使用这个

(?=^((?:info|someother)@))|(@spam\.com$)
从组索引1和2中抓取第一部分和第二部分


使用肯定的先行断言来进行重叠匹配

(?=^(.*@))|(@.*)

如果你想要一个特定的解决方案,那么你可以使用这个

(?=^((?:info|someother)@))|(@spam\.com$)
从组索引1和2中抓取第一部分和第二部分


还有一个问题,如果我还需要匹配完整的电子邮件,我应该使用什么
someemail@somedomain.com
?还有一个问题,如果我还需要匹配完整的电子邮件,我应该使用什么
someemail@somedomain.com
?还有一个问题,如果我还需要匹配完整的电子邮件
someemail@somedomain.com
?还有一个问题,如果我还需要匹配完整的电子邮件,我应该使用什么
someemail@somedomain.com