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