2012-04-18 22 views
-4

這if條件:如何檢查是否有符號 - 在php中顯示正則表達式?

if (preg_match('/^[a-zA-Z_]+\z/', $network_path)) 

跳過字符串,如: 喇嘛喇嘛喇嘛喇嘛

如何提高這個表達式所以它會接受像上面的字符串..?

+0

將'-'添加到接受字符的列表...因爲' -'在字符類中是特殊的,你必須把它放在開頭或結尾。這一切都很好地解釋在這裏:http://www.regular-expressions.info/charclass.html – 2012-04-18 11:02:49

回答

2

This [a-zA-Z_] is a character class。該構造匹配方括號內定義的一個字符。

所以這個類匹配a到z,A到Z和下劃線。如果你想匹配一個破折號,你只需要將它添加到類。但要小心,-是一個字符類中的特殊字符,所以如果你想從字面上匹配它,你需要將其轉義或放到類的開始或結束。

if (preg_match('/^[-a-zA-Z_]+\z/', $network_path)) 

if (preg_match('/^[a-zA-Z_-]+\z/', $network_path)) 

if (preg_match('/^[a-zA-Z\-_]+\z/', $network_path)) 
1
if (preg_match('/^[-a-zA-Z_]+\z/', $network_path)) 
1

(不是PHP的人,所以因人而異,但...)

的被處理[]作爲內的字符大多數perl兼容的正則表達式引擎的字符類。字符類可以遵循我的修飾符,如+,它將接受該類中的一個或多個字符。所以如果你只是在角色類中添加破折號,你應該得到你要找的東西(或者至少,你用紅寶石做!)

相關問題