2011-08-14 21 views
1

AJAX檢查功能,檢查插入類別名稱的正則表達式應該是唯一的字母數字和也讓空間什麼是空間和字母數字我使用

我用這個功能eregi_replace與下面的正則表達式[a-zA-Z0-9_]+

$check = eregi_replace('([a-zA-Z0-9_]+)', "", $catname); 

但是,當我插入例如hello world它失敗的原因不接受的空間,但如果我把它寫成helloworld作品類別名稱,所以我理解的是,誤差必須在正則表達式我」使用。

那麼什麼是正確的正則表達式過濾任何特殊字符,只允許字母數字和空格。

非常感謝

回答

2

你有它接近直角,只需添加\ S到您的方括號的「Hello World」將成爲過去。

([A-ZA-Z0-9 _ \ S] +)

+1

這將匹配任何空格字符,包括選項卡,回車和換行 – Phil

+0

哦right> _>我忘了。 – Alastair

5

字符類匹配字母,數字,下劃線和空間將

[\w ] 

你應該使用現在不推薦使用任何POSIX正則表達式函數。相反,請使用PCRE suite中的上級對應項。

3

正則表達式更改爲:

([A-Za-z0-9_]+(?: +[A-Za-z0-9_]+)*) 

我意識到,這不是那麼簡單,因爲你可能有希望。注意事項:

  • 標識符必須以一個非空格開始
  • 如果有空間,他們應該是的話,而不是在年底
  • ?:匹配之間用於防止額外的分組中您的表情,但不是必需的
  • +之後的空格字符允許單詞之間有多個空格。您可以通過刪除單個空間來強制執行一個空間,但在某些解決方案中,使用與" +"(具有加號的空格)相匹配的preg_split在內部規範化空間是一種更好的做法,然後使用implode(" ", $array)。但是,呃......如果你只是驗證,這應該沒問題。
+0

+1雖然這個答案有很多假設,但我會說你已經釘住了它。僅供參考,您可以將'[A-Za-z0-9_]'縮小爲'\ w' – Phil

1

我有一些老朋友的幫助,我已經測試和完美的作品 - 謝謝大家的回答和評論,這對我很有幫助。

這個完美的作品

$check = eregi_replace('(^[a-zA-Z0-9 ]*$)', "", $catname); 

字母和空格的正則表達式

@Phil 你的完美的作品,但仍然會通過下劃線〜感謝

@邁克爾·海斯 我不知道沒有工作的空白,但您的意見是非常有益的〜謝謝

@kjetilh 我會讀更多關於$ preg〜謝謝

@Alastair 工作正常,如果我已經用\只有空白取代\ \! 〜謝謝

+0

我從您的問題中的代碼假定您確實需要下劃線。另外,爲什麼你忽略關於'eregi_replace()'的建議? – Phil

相關問題