簡體   English   中英

PHP preg_match即使條件匹配也返回false

[英]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()可以返回01 ,或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM