2011-01-19 61 views
2

我有以下代碼:Zend Framework:爲什麼空白符合我的正則表達式?

$sfKeyword = new Zend_Form_SubForm(); 

$tfKeyword = $sfKeywords->createElement('text', 'keyword'); 
$tfKeyword->setLabel('Keyword: '); 
$tfKeyword->addValidator('regex', false, array('/[a-zA-Z_][a-zA-Z_0-9]*/')); 

此正則表達式驗證關鍵字和被認爲僅允許A-Z,A-Z,和_作爲第一字符,然後附加地允許數字0-9,零個或多個。

但是,當輸入一些帶有空格的字符串時,字符串將通過驗證器而不會出現錯誤消息。這不應該是這樣。

注意,我也試着

'/[a-zA-Z_][a-zA-Z_0-9]*/s' 

但沒有差異(如預期)。

正則表達式(或Zend Framework)有什麼問題?

+0

然而,我需要糾正我的表達,以允許空白空間。問題本身幫助。 – Daenarys 2013-09-29 05:07:34

回答

7

問題是你的正則表達式沒有錨定。這意味着只要字符串的某些部分與正則表達式匹配,正則表達式就會匹配。相反,固定在那裏:

/^[a-zA-Z_][a-zA-Z_0-9]*$/ 

領先^人物說「字符串的開始」,並尾隨$表示「字符串的結束」。所以現在它會匹配任何以[a-zA-Z_]開頭的字符串,然後是一個或多個[a-zA-Z_0-9],直到字符串結束。

+0

+1,打我幾秒鐘。 – jasonbar 2011-01-19 19:19:51

相關問題