我是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.";
}
?>
在您的测试字符串john123
和group1
有您试图与[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]+
表示字母数字字符。
看到演示