我有這樣的正則表達式:RegEx不能正常工作?
/[^a-z\s]/i
這是假設匹配從A到Z的任何字符和A-Z和遇到的任何空白。它適用於角色,但不適用於空間,爲什麼?
我檢查在PHP這樣的:
if (preg_match('/[^a-z\s]/i', $username)) {
...
}
我檢查,看看是否用戶名包含任何其他字符除字母(A-Z,A-Z)或大於空間。
我有這樣的正則表達式:RegEx不能正常工作?
/[^a-z\s]/i
這是假設匹配從A到Z的任何字符和A-Z和遇到的任何空白。它適用於角色,但不適用於空間,爲什麼?
我檢查在PHP這樣的:
if (preg_match('/[^a-z\s]/i', $username)) {
...
}
我檢查,看看是否用戶名包含任何其他字符除字母(A-Z,A-Z)或大於空間。
你的正則表達式應該是這樣的: /^[a-z\s]+$/i
if (preg_match('/^[a-z\s]+$/i', $username)) {
//the username is ok.
}
對我的作品!也許你應該包括一個完全可重複的例子,但它爲我提供了空間。
您也可以重寫此正則表達式做相反的,這是比較明顯的一點,我個人的看法:
/^[a-z\s]*$/
/[^a-z\s]/i
將只匹配字符不在區分大小寫設置az和空間。嘗試刪除^
,否定括號內的字符。模式匹配所有字母和空格應改爲:
/[a-z\s]/i
注意\s
將不只是匹配的空間。它將匹配任意空格字符(如製表符和換行符)。最後
/^[a-z\s]/i
,如果你想匹配:
如果要強制火柴開始以字母或空間,你必須移動^
外的支架,像這樣以一個或多個出現的字母和空格開頭的字符串,您需要添加+
修飾符。因爲^字符是一個錨
/^[a-z\s]+/i
,並且已將它不正確......如果你使用^和$的開始和結束串的標記,他們需要:否則,它只會匹配單個字符分別出現在絕對的開始和結束處。
所以,它聽起來就像你想要:
^[a-zA-Z\s]$
,或者如果你想匹配的α的倍數和/或空格,則:
^[a-zA-Z\s]*$
的''^反轉的含義模式。 「匹配任何不是a-z或空格的字符」。 –
我知道,因爲如果條件返回true,我會給出一個錯誤,所以如果我刪除'^',我會做'if(!(preg_match('/ [^ az \ s]/i',$ username))) {...}'。所以這就是我需要的方式,問題似乎是它看不到空格,甚至不止一個。 – Roland