我學習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」 –