[英]PHP preg_match return false even if condition match
我正在使用preg_match來驗證輸入:
$string = 'test';
if (preg_match ('/[^-a-z\d]/i', $string))
{
return true;
}
else
{
return false;
}
好吧,我不明白為什么它在這里返回false !
我想念什么嗎?
它不應該返回true嗎?
解決方案 :
(preg_match ('/^[-a-z\d]*$/i', $string))
提爾這個
(preg_match ('/^[-A-Za-z\d]*$/', $string))
所以preg_match()
可以返回0
, 1
,或false
它可能是更安全做了嚴格的檢查,其結果等於1
,即
abstract class Pattern
{
/** @const int */
const TEXT_MATCH = 1;
/**
* @param string $pattern regex pattern to match against
* @param string $string the text string to search
*
* @return bool
*/
public static function match(string $pattern, string $string): bool
{
return preg_match($pattern, $string) === self::TEXT_MATCH;
}
}
主要是您對此感興趣的一點
preg_match($pattern, $string) === 1;
如果您隨后使用它:
$result = Pattern::match('/[^-a-z\d]/i', 'test');
var_dump($result); // false
該字符串未通過檢查。 如果那不能解決您的問題,我們將需要查看一些您一直在傳遞的字符串示例。 還可能需要解釋一下正則表達式要與之匹配的內容,因為這也可能是問題的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.