我是這樣一個業餘的正則表達式,我如何讓這個正則表達式中的空間(無所謂多少)?如何在此正則表達式中允許空格?
if(preg_match('/[^A-Za-z0-9_-]/', $str)) return FALSE;
我是這樣一個業餘的正則表達式,我如何讓這個正則表達式中的空間(無所謂多少)?如何在此正則表達式中允許空格?
if(preg_match('/[^A-Za-z0-9_-]/', $str)) return FALSE;
if(preg_match('/[^A-Za-z0-9_ -]/', $str)) return FALSE;
注意,我把空間連字符之前。如果空格在連字符後面,我將指定從下劃線到空格的字符範圍。 (問題也放一個反斜槓連字符之前逃吧躲避)
這是假設你是「允許」的意思是:這個表達式是被用來驗證字符串,如果比賽 ,那麼字符串是不允許(因此return FALSE
)。因此,否定字符類([^...]
)中的字符實際上是允許的個字符。 (這是導致一些普遍的混亂中這個問題。)
如果需要,只允許你需要空間「/ /」
如果你需要允許任何空白字符(空格,製表符,換行符) - 使用 '/ \ s /'
如果你需要一個空間添加到您的模式(指忽略空格) - 使用/ [^ A-ZA-Z0-9 _ \ - ]/
不這是你的問題的答案,但我覺得有用的網站checking regex expressions。它還解釋了當您將鼠標懸停在輸入字段上時,表達式的每個部分所做的/意義。
在常規expretion這樣'/[^A-Za-z0-9_-\s]/'
的\s
意味着空間
你的問題還不清楚。如果$str
具有任何不是A-Za-z0-9_-
的字符,則正則表達式將成功。由於空格不是這些字符之一,所以正則表達式將匹配,並且整個語句返回FALSE
。
如果這不是你想要的,你想匹配正則表達式,如果$str
有不A-Za-z0-9_-
或空格的任何字符,則需要將其更改爲A-Za-z0-9_ -
(注意下劃線之間的空間和連字符)。因此,當你的字符串有一個不是A-Za-z0-9_ -
的字符時,正則表達式將匹配,並且你的語句將返回FALSE
。如果您的字符串完全由A-Za-z0-9_ -
組成,那麼正則表達式將無法匹配,並且您的處理將繼續到下一行。
編輯:下面是一個例子:如果你的字符串是abc123def
,目前正則表達式不匹配,你將不會返回FALSE
。如果字符串爲abc123 def
,則正則表達式將匹配,並且語句將返回FALSE
。如果將字符類更改爲A-Za-z0-9_ -
,則正則表達式將無法匹配abc123def
和abc123 def
,並且您將不會返回FALSE
。
您現在允許sapces – Mchl 2011-01-25 19:48:11