2013-03-09 78 views
0

我想在PHP學習正則表達式,並試圖爲特定模式編寫正則表達式。正則表達式模式PHP?

我試圖實現的模式如下,

必須以字母開頭。

可以包含字母,數字或下劃線。

必須在整個字符串中至少有3個字母。

我試過的東西;

'#^[a-z0-9_]+$#i' // this one just matches the characters I want 

這是我堅持我想這其中,

'#^[a-z]{1}[a-z0-9_]+$#i' // doesn't work 

我試圖從這個網站了解,但我發現很難環繞它我的頭,

http://www.regular-expressions.info/reference.html

感謝

回答

2
'#^[a-zA-Z]([0-9_]*[a-zA-Z]){2}[a-zA-Z0-9_]*$#' 

[a-zA-Z]檢查所述第一約束(以字母開頭)

([0-9_]*[a-zA-Z]){2}檢查第二contraint(必須有總共3個字母)

[a-zA-Z0-9_]*釋放先前約束上並且僅被限制使用允許的字符

+0

第二個限制在你的正則表達式是連續兩個字母,而不是「3個字母中總」。它會禁止'A1_B2_C3'。斷言會更容易。另外'/我'國旗。 – mario 2013-03-09 15:47:10

1

這應做到:

#^[a-zA-Z]{1}(\w*[a-zA-Z]\w*){2}$#i 

說明:

^[a-zA-Z]{1} // 1st character is a letter 
(\w*[a-zA-Z]\w*){2}$ // The rest of the body contains exactly 2 letters, and 0 or more of any other word characters (letter, number, underscore) 

這裏有一個refiddle例如:http://refiddle.com/gld