2013-01-15 69 views
0

這是不工作我的出發正則表達式:開始的preg_match字符串「做」和後跟任意字符

'/^(DO)(?<cmd>.{1,6})$/' 

表達式應該匹配任何字符串開頭的「做」,後弦「DO」必須至少爲1,最長6個字符。

我想到:

DO // NOT A MATCH 
DO123 // MATCH 
DOaaa123 // MATCH 
DOaaa123b // NOT A MATCH 

?<cmd> 

是一個名爲子模式:比賽被存儲爲關聯數組。

+0

你嘗試過像「/^(DO)(.+){1,6}$/ 「; – shawndreck

回答

1

好像它一回的兼容性問題,雖然documentation changelog說:

5.2.2命名的子模式現在接受的語法和( '名'?)以及((?)? P)。以前版本只接受(?P)。

使用PHP 5.4.8,窗戶IIS

這工作得很好:

'/^(DO)(?P<cmd>.{1,6})$/' 
2

爲什麼? ? trye ^(DO)(.{1,6})$

相關問題