在php preg_match()中强制使用特殊字符(@)
我正在尝试在邮件()中为密件抄送创建预匹配()。 我已经创建了以下preg_match()在php preg_match()中强制使用特殊字符(@),php,preg-match,Php,Preg Match,我正在尝试在邮件()中为密件抄送创建预匹配()。 我已经创建了以下preg_match() if(空($mail\u bcc)) { $\会话['error']。=“请输入密件抄送电子邮件id.”; $error=1; } 如果(!preg_)匹配('/^\s*[A-Za-z0-9@.,]+\s*$/',$mail_bcc)| | preg_match('/^/',$mail_bcc)| | | preg_match('/$/',$mail_bcc)) { $\u SESSION['error'
if(空($mail\u bcc))
{
$\会话['error']。=“请输入密件抄送电子邮件id. ”;
$error=1;
}
如果(!preg_)匹配('/^\s*[A-Za-z0-9@.,]+\s*$/',$mail_bcc)| | preg_match('/^/',$mail_bcc)| | | preg_match('/$/',$mail_bcc))
{
$\u SESSION['error']。=“请输入有效的密件抄送电子邮件id。不允许使用空格,并用逗号(,)分隔密件抄送电子邮件地址。 ”;
$error=1;
}
对于这一点,我得到的结果如下
要在像您这样的正则表达式中至少需要一个
@
,最简单的方法是使用(?=[^@]*@)
正向前瞻:
'/^(?=[^@]*@)\s*[A-Za-z0-9@. ,]+\s*$/'
^^^^^^^^^^
(?=[^@]*@)
构造将开始查找除@
([^@]*
)之外的任何0+字符,直到字符串开头(^
)的第一个@
)。如果它找到一个@
,将搜索消费模式的其余部分,否则,正则表达式引擎将立即使匹配失败。尝试'/^(?=[^@]*@)\s*[a-Za-z0-9@.,]+\s*$/'
@jashhandrews您想验证电子邮件地址还是做其他事情?@WiktorStribiżew:成功了。@WiktorStribiżew:您能帮我一下吗。这是初学者学习正则表达式的最佳站点。我只是讨厌他们。我的正则表达式从来没有给我正确的结果。有很多。不过,要真正学到一些东西,你需要练习。实践的最佳方式是通过解决实际问题。基础知识可以在学习,其余的可以在这里掌握,等等。订阅regex标签,或者在搜索框中使用[regex][php]
标签搜索站点。用于测试与PCRE兼容的表达式(该网站还自动提供对模式的详细解释)。net也是一个很好的资源。
'/^(?=[^@]*@)\s*[A-Za-z0-9@. ,]+\s*$/'
^^^^^^^^^^