Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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正则表达式删除句点之前和包含句点的段_Php_Regex - Fatal编程技术网

PHP正则表达式删除句点之前和包含句点的段

PHP正则表达式删除句点之前和包含句点的段,php,regex,Php,Regex,我有一段PHP代码,可以从包含大量电子邮件地址的大字符串中解析电子邮件地址: $pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i'; preg_match_all($pattern, $emailBatch, $matches); 除了在@被截断之前包含一个句点的任何电子邮件地址之外,这种方法都能很好地工作 示例:jim。dandy@foo.com变为dandy@foo.com 如何修改正则表达式以允许/

我有一段PHP代码,可以从包含大量电子邮件地址的大字符串中解析电子邮件地址:

$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);
除了在
@
被截断之前包含一个句点的任何电子邮件地址之外,这种方法都能很好地工作

示例:
jim。dandy@foo.com
变为
dandy@foo.com


如何修改正则表达式以允许/接受地址中的句点(以及电子邮件地址的任何其他法定字符)?

在模式的第一组中,您需要添加一个点:

$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);

因为在第一组中没有指定它,所以它只捕获第二部分(就在
@
符号之前)。

在图案的第一组中,您需要添加一个点:

$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $emailBatch, $matches);

由于没有规定第一组中的第一组中的规定,它只捕获了第二部分(即在<代码>之前,<<<代码><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[a-zA-Z0-9]?\)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)(?:\[(?:(?:[01]?\d{1,2}2[0-4]\d | 25[0-5])\){3}(?[01]?\d{1,2}2[0-4]\d | 25[0-5])$。。。简单,或者,你知道。。。可能最好不要使用RYO电子邮件验证正则表达式,很可能它与RFC 2822规范不匹配。此正则表达式在许多已发布的新TLD上也会失败,例如
。online
您的电子邮件字符串是如何分隔的?也许在这一点上分道扬镳比试图剖析电子邮件地址要好。请更新你的问题。你能提供样本输入吗?你能提供样本输入吗?你能提供样本输入吗?你能提供你的问题更新你的问题。你能提供样本输入吗?你能提供样本输入吗?你能提供样本输入吗?你能提供样本输入吗?你能提供样本输入吗?你能提供样本输入?能否提供你能提供样本输入吗??)中文中文:::::::::[以下以下以下以下以下以下以下:::::::::::::::::::::::)若(以下以下:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:(:())))甲))一)一)一)一)a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-zA-zA-10-zA-zA-10-Z10-10-[a-zA-Z0-9](?!$){0,61}[a-zA-Z0-9]?)\(?:\[(?:[01]?:[01]?\d{1,2}2[0-4]\d|25[0-5]){3}[01]?\d{1,2}2[0-4]\d|25[0-5])\]))$。。。简单,或者,你知道。。。可能最好不要使用RYO电子邮件验证正则表达式,很可能它与RFC 2822规范不匹配。此正则表达式在许多已发布的新TLD上也会失败,例如
。online
您的电子邮件字符串是如何分隔的?也许在这一点上分道扬镳比试图剖析电子邮件地址要好。请更新您的问题。此答案中的此模式在技术上会丢失一些有效电子邮件,但我可以建议此模式的更简短/精简版本,避免不必要的转义:
~[\w.+-]+@[a-z\d-]+\.([a-z]{2,3})(?:\[a-z]{2})~I
此答案中的此模式在技术上会丢失一些有效电子邮件,但是我可以建议一个更简短/精简的模式版本,它没有不必要的转义:
~[\w.+-]+@[a-z\d-]+\([a-z]{2,3})(?:\.[a-z]{2})~I