我需要写一个正则表达式,但由于某种原因我不能得到\ s来找到空格, 我在努力......
$name = "a ";
if( preg_match('^[a-z]+\s$', $name)){
echo "match";
} else {
echo "no match";
}
我也试过
preg_match('^[a-z\s]+$');
和
preg_match('^[a-z]/\s/$');
我只是没有比赛。 完整的正则表达式需要允许1个或多个小写字母,然后是一个空格,然后是一个大写字母后跟一个或多个小写字母,但是......
preg_match('^[a-z]+\s[A-Z][a-z]+$');
不能正常工作,因为我希望它可以用于我在网络上看到的教程(sitepoint等...)。
有人对此有所了解吗?
答案 0 :(得分:7)
您必须在表达式中添加delimiters(docs):
$name = "a ";
if( preg_match('/^[a-z]+\s$/', $name)){
// ^ ^
// └----------┴----- here: slash as delimiter
echo "match";
} else {
echo "no match";
}
这里我使用斜杠/
,但您可以自由选择分隔符(好吧,不是那么多:任何非字母数字,非反斜杠,非空格字符 )。
确保将错误报告设置为包含警告,例如添加error_reporting(E_ALL)
。然后你会看到这个警告:
警告:preg_match():在...中找不到结束分隔符'^'... 没有比赛
PHP将字符串中的第一个字符视为分隔符,因此在您的情况下为^
。