Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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_Debugging_Expression - Fatal编程技术网

正则表达式(PHP)

正则表达式(PHP),php,debugging,expression,Php,Debugging,Expression,您好,我需要用一个正则表达式用PHP查找数组中所有匹配的元素,但我有一个bug <?php $a[0]='user@mail.ru'; $a[1]='112233@mail.domen'; $a[2]='ru@mail.user'; $a[3]='___@.user'; $pattern = '[a-z_0-9]+@[a-z]*.[a-z]{2,}'; for ($i=0;$i<=3;++$i) { if(preg_match($pattern,$a[i])) {

您好,我需要用一个正则表达式用PHP查找数组中所有匹配的元素,但我有一个bug

<?php
$a[0]='user@mail.ru';
$a[1]='112233@mail.domen';
$a[2]='ru@mail.user';
$a[3]='___@.user';
$pattern = '[a-z_0-9]+@[a-z]*.[a-z]{2,}';
for ($i=0;$i<=3;++$i)
{
    if(preg_match($pattern,$a[i]))
    {
        echo $a[i];
    }
}
您可以试试这个-

$a[0]='user@mail.ru';
$a[1]='112233@mail.domen';
$a[2]='ru@mail.user';
$a[3]='___@.user';
for ($i=0;$i<=3;++$i)
{
  if (!preg_match("/^[-_\.a-z0-9]+@([-_a-z0-9]+\.?)*[a-z]{2,6}$/i", $a[$i])) {
      return false;
  }
return true;
$a[0]='user@mail.ru';
$a[1]='112233@mail.domen';
$a[2]='ru@mail.user';
$a[3]=“用户”;
对于($i=0;$i此处不需要正则表达式——PHP具有内置的电子邮件验证功能:

filter_var( $email, FILTER_VALIDATE_EMAIL );
请参见此处的手册页:


甚至还有一个
filter\u var\u array()
,它甚至可以让你不必有一个循环。

试着用双引号。在正则表达式中使用哪个引号并不重要,但我已经尝试了每个变量。我只是学习了一下,并没有具体应用,但感谢您提供更多信息