這個正則表達式有什麼問題?我需要它使$ name成爲字母數字。現在它似乎根本不起作用。使用正則表達式
if (!preg_match("/^[A-Za-z0-9]$/",$name)) {
$e[]="name must contain only letters or numbers";
}
這個正則表達式有什麼問題?我需要它使$ name成爲字母數字。現在它似乎根本不起作用。使用正則表達式
if (!preg_match("/^[A-Za-z0-9]$/",$name)) {
$e[]="name must contain only letters or numbers";
}
你需要一個量詞,否則它只會允許一個字符。例如,要求必須有一個或多個字符使用+
:
/^[A-Za-z0-9]+$/
你的正則表達式也僅描述一個單個字符。要麼使用一個quantifier像+
以允許[A-Za-z0-9]
被重複一次或多次:
if (!preg_match("/^[A-Za-z0-9]+$/",$name))
或者你可以反你的表達和尋找不屬於字母數字字符([^A-Za-z0-9]
是[A-Za-z0-9]
補):
if (preg_match("/[^A-Za-z0-9]/",$name))
不要忘記看看其他功能,它會做你想要的東西,而不用正則表達式的開銷。在這種情況下,您可以使用ctype_alnum
。
當你不完全知道你的表達是幹什麼的時候,有時候用工具測試它會有幫助。你可以嘗試也許正則表達式教練:http://www.weitz.de/regex-coach/ :)