2013-02-01 143 views

回答

7

嘗試在字符類[]

$fnameRegex = "/^[a-zA-Z0-9\-_]{0,40}$/"; 

一切都將只匹配一個字符。你把數量限制器放在它外面(你以前有+這是1或更多 - 用{0,40}替換它在0和40之間)。

我還在角色類中逃脫了你的-角色,否則它會被解釋爲一個範圍。

我也向你推薦偉大的regexr網站,這個網站很適合與正則表達式交互使用。

+0

我聽說有趣的事情發生時,你逃脫了一個短劃線 – GivenPie

+0

真的嗎?當你*不*逃脫一個在字符類中被認爲是字面上的短劃線時,就會發生不好的事情。如果你不想因爲某種原因而逃避它,那麼把它放在字符類的開頭或結尾,這樣就不會有歧義:'[a-zA-Z0-9 _-]'。 –

+0

我已經嘗試過上面的模式,但有允許字之間的空間,所以如何避免空格也... – Sajith

-2

這個怎麼樣?

^(\d){0,40}$ 

\ d僅匹配位數 {0,40}表示前面的表達式(\ d)可存在從0到40倍。

你可以使用這個工具來檢查你的正則表達式。它可以是有用的: http://gskinner.com/RegExr/

希望這有助於

+0

感謝您的鏈接!我真的需要這個 – GivenPie

0

嘗試 [A-ZA-Z0-9] {40} 這將檢查字母數字的40個字符與上部和下部殼體

相關問題