PHP正则表达式错误


PHP Regex error

我是PHP正则表达式的新手。我已经写了下面的代码,但有一些错误。有人能告诉我出了什么问题吗?

代码链接

输入:

    1 => 'String',
    2 => 'String String',
    3 => 'email',
    4 => 'date',
    5 => 'date',
    6 => 'String String',
    7 => 'String String',
    8 => 'String',
    9 => 'date'

下面是与上面相同的代码链接:

<?php 
    $text = "john123 john william johnw@hotmail.com 2015-05-09 13:21:41 2015-08-07 13:21:41 James James William William group1 2015-05-30 18:05:39"; 
    $regex = '~([a-zA-Z]+) ([a-zA-Z]+ [a-zA-Z]+) ([-'w.+]+@[-'w.+]+'.[a-zA-Z]{2,4}) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2}) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2}) ([a-zA-Z]+ [a-zA-Z]+) ([a-zA-Z]+ [a-zA-Z]+) ([a-zA-Z]+) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2})~i';
    if ( preg_match( $regex, $text ) ) {
         echo $text . " is a valid text. We can accept it.";
    } else { 
         echo $text . " is an invalid text. Please try again.";
    } 
?>

在您的测试字符串john123group1有您试图与[a-zA-Z]+匹配的数字,使它们成为[a-zA-Z'd]+和其他可能的数字组。使用以下语句:

([a-zA-Z'd]+) ([a-zA-Z]+ [a-zA-Z]+) ([-'w.+]+@[-'w.+]+'.[a-zA-Z]{2,4}) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2}) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2}) ([a-zA-Z]+ [a-zA-Z]+) ([a-zA-Z]+ [a-zA-Z]+) ([a-zA-Z'd]+) ('d{4}-'d{2}-'d{2} 'd{2}:'d{2}:'d{2})

编辑:既然你已经使用i(大小写不敏感)修饰符…您可以只使用[a-z]+表示字母字符,[a-z'd]+表示字母数字字符。

看到演示