2013-07-07 57 views
0

我試圖做一個正則表達式,允許輸入包括至少一個數字和至少一個字母(不管大小寫)和沒有其他的東西。下面是我想出:PHP,正則表達式 - 如何禁止非字母數字字符

<?php 
    if (preg_match('/(?=.*[a-z]+)(?=.*[0-9]+)([^\W])/i',$code)) { 
    echo "=)"; 
    } else { 
    echo "=("; 
    } 
?> 

雖然提供虛假如果我只使用數字或字母,如果我加$或#或其他任何非字母數字符號給出正確的。現在,我嘗試將^ \ W放入帶有a-z和0-9的類括號中,嘗試使用類似於?=。* [^ \ W]或?>的東西!但我無法完成它的工作。在非alphanums打字仍然是正確的。 Halp meeee

+2

用什麼 「沒有別的」?如果「任何輸入都包含一位數字和一個字母」,那麼您的意思是? – Jon

回答

1

您需要使用錨點,以便它匹配整個字符串。

^(?=.*[a-z]+)(?=.*[0-9]+)(\w+)$ 
+1

你的正則表達式永遠不會匹配,因爲這個lookaheads需要兩個字符,而表達式只能匹配一個。另外,'[^ \ W]'與'\ w'相同,所以請使用它。這是一個有效的例子:http://regex101.com/r/fP6rJ1 - 除此之外,你對錨點是正確的。 –

+0

錨......現在看起來很明顯。非常感謝我的朋友,現在都在工作! – Quit

相關問題