我学习PHP正则表达式 通常下面的代码应该在屏幕上显示我“假” 但它显示我“真” 你能告诉我为什么吗? 与部分匹配的非锚定的正则表达式搜索时使用谢谢PHP的正则表达式类间隔
<?php
if (preg_match("#[^a-z]#", "la nuit, tous les chats sont gras"))
{echo 'TRUE';}
else
{echo 'FALSE';}
?>
我学习PHP正则表达式 通常下面的代码应该在屏幕上显示我“假” 但它显示我“真” 你能告诉我为什么吗? 与部分匹配的非锚定的正则表达式搜索时使用谢谢PHP的正则表达式类间隔
<?php
if (preg_match("#[^a-z]#", "la nuit, tous les chats sont gras"))
{echo 'TRUE';}
else
{echo 'FALSE';}
?>
一个preg_match
。
如果你想确保整个字符串包括除小写ASCII字母其他字符,请使用
if (preg_match("#^[^a-z]*$#", "la nuit, tous les chats sont gras"))
{echo 'TRUE';}
else
{echo 'FALSE';}
详细:
^
- 字符串开始[^a-z]*
- 除小写ASCII字母以外的零个或多个字符$
- 字符串末尾(或者\z
在这里最好匹配字符串的最末尾)。另请参阅[this regex demo](https://regex101.com/r/UiMZN4/1)。 –
让我分裂这个给你:
[]
A组^
内集团的意思是 “不”,该组中的所有定义,是指它的对面a-z
所有从小到小的字母z最后找到所有空格和逗号。
在您的正则表达式中,您尝试查找第一个非字母字符,并在您的主题字符串中显示此符号。检查它:
preg_match_all("#^[^a-z]*$#", "la nuit, tous les chats sont gras", $matches);
var_dump($matches);
结果
array (size=1)
0 =>
array (size=7)
0 => string ' ' (length=1)
1 => string ',' (length=1)
2 => string ' ' (length=1)
3 => string ' ' (length=1)
4 => string ' ' (length=1)
5 => string ' ' (length=1)
6 => string ' ' (length=1)
你为什么想到假的? –
空格和逗号是非alpha字符。使用锚点进行完全匹配,或http://php.net/manual/en/function.ctype-lower.php。 – chris85
另外,它是“la nuit,tous les chats sont gr * i * s” –