return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str);
當嘗試上面的代碼時,該函數將返回true到大於64的字符串。 這裏有什麼問題?php限制正則表達式與括號匹配不起作用
return preg_match('/^([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*){1,64}$/iu', $str);
當嘗試上面的代碼時,該函數將返回true到大於64的字符串。 這裏有什麼問題?php限制正則表達式與括號匹配不起作用
我不知道是什麼毛病你的表情(我可以用ASCII字符複製它),但是這是工作
/^(?=.{1,64}$)([\d\p{Hebrew}]*\p{Hebrew}[\d\p{Hebrew}]*)$/
刪除在端部的長度的檢查。
在開始處添加(?=.{1,64}$)
。這是一個積極的展望,只是檢查整個字符串是否在1到64個字符之間。如果是,則檢查模式,如果沒有結果是False
。
您使用*內的(),這意味着該字符串可以比64更大的.. {1,64}量詞指整個表達在圓括號中,其不具有爲1個字符。這個正則表達式試圖找到什麼? – yoavmatchulsky
在希伯來文中至少包含一個字符的字符串,之前的數字和最少一個字符之後的數字。基本上混合希伯來語和數字 – Tom
檢查strlen($ str)<64後,爲什麼不用preg_match檢查數字/希伯來語? (或者可能是mb_strlen) – yoavmatchulsky