[英]Regular expression to check for two characters
我想檢查值是'H'還是'T',否則它可能是'H',它可以是'T'或'H'和'T'
這一切都存儲在一個數組中
我正在使用這個正則表達式來檢查這兩個單詞。
$combo = preg_match('[HT]',strtoupper($_REQUEST['combo']));
如果值為HT,它會給我成功。 如果我只是'H'或'T'......或反復出現'H'或'T',它就不符合上述代碼。
希望這可以幫助你理解...一個簡單的投幣游戲有兩個可能的'H' - 頭和'T'尾...用戶可以玩9輪所有... $組合存儲這個組合只包含H和T ......我在這里檢查一個來自url的php調用,例如: - www.domain-name.com/submit_combo_predisc.php/?prefix=p&uid=username&txn=9574621083&combo=HH H&K = 29c3550e430723e5c61a66bd03ba4ff5 ....
這里用戶有三個輸入正確,他贏得一定數量的三個組合權。如果我輸入'HH4'而不是'HHH',它仍然顯示你有三個組合權利,用戶有一定數量獲得正確的三種組合....這實際上是錯誤的....因為傳遞的值是'HH4'...... n不是'HHH'。 用戶實際上可以濫用網址贏取無限量....
$combo = preg_match('/^(H|T|HT)$/',strtoupper($_REQUEST['combo']));
這匹配H,T和HT。
如果你想匹配TH,
$combo = preg_match('/^[HT]{1,2}$/',strtoupper($_REQUEST['combo']));
是更好的選擇。
你想使用量詞。 {1,2}
可行:
preg_match('/^[HT]{1,2}$/'
請注意,您的正則表達式也缺少分隔符。 這就是為什么它只與HT
匹配 - 因為方括號被解釋為分隔符而不是字符組。
似乎你真正想要的(但從未說過)是計算H
s和T
s的數量。 那么更簡單的方法是:
$combo = strlen(preg_replace('/[^HT]/i', "", $_REQUEST['combo']));
正則表達式必須是
'^[HT]{1,2}$'
這允許以下值:'H','T','HT','TH','HH'和'TT',但沒有別的!
$combo = preg_match('/[HhTt]/',$_REQUEST['combo']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.