我總是得到stuf與preg_match
功能。不知道我的regelur表達
我希望輸入與a-z
,A-Z
,0-9
,@#&-_.,
匹配,沒有別的。 因此,如果!
在輸入中,它需要返回false。
我到現在爲止。
$string = "String-20";
return (preg_match("/[a-z][A-Z][0-9][@#&-_.,]/i", $string)) ? true : false;
這應該會返回true
。
但保留返回false
。
我總是得到stuf與preg_match
功能。不知道我的regelur表達
我希望輸入與a-z
,A-Z
,0-9
,@#&-_.,
匹配,沒有別的。 因此,如果!
在輸入中,它需要返回false。
我到現在爲止。
$string = "String-20";
return (preg_match("/[a-z][A-Z][0-9][@#&-_.,]/i", $string)) ? true : false;
這應該會返回true
。
但保留返回false
。
你會希望將這些作爲一個集合,而不是像那樣分解它們。你的模式將匹配一個字符串,如「aA0 @」
你說的「一個字符az,然後一個Az,然後一個0-9,然後是這些特殊字符之一」,但你實際需要的是「任何數字這些特定字符「
^和$ mean字符串的開始和結束,所以我認爲這應該做你想做的。
preg_match('/^[[email protected]#&\-_.,]*$/i', $string)
很好的消除。但是當我刪除A-Z並且在字符串中有一個大寫字母時,它仍然是真的 – LenapCapo
是的,我的初始答案是完全錯誤的,請嘗試編輯<3 –
也是? true:false是多餘的,返回preg_match('/^[a-z0-9 @#&-_。,] * $/i',$ string); –
你的正則表達式4個字符塊(S)任何地方匹配的字符串中(如preg_match
可以找到部分匹配):2個字母,然後一個數字和一些字符,包括大寫字母,因爲&-_
聲明如下範圍:
使用
/^[[email protected]#&_.,-]+$/i
甚至(因爲\w
這裏將匹配[a-zA-Z0-9_]
):
/^[\[email protected]#&.,-]+$/
如果一個空字符串將被允許,*
(零個或多個)取代+
(出現一次或多次)。
這個^
錨將確保引擎在字符串的開始處開始匹配並且$
錨將確保該模式應該匹配到字符串結尾。字符類末尾的連字符將被解析爲文字-
。
連字「whithin」字符類'[]'具有範圍的特殊含義,除非它被轉義了'\ -'或最後一個字符。 –
那麼,你的正則表達式匹配4個字符:2個字母,然後是一個數字和一些字符,包括大寫字母。你似乎想要'/^[a-zA-Z0-9 @#&_。, - ] + $ /' –