preg_match字符串以'DO'开头,后跟任何字符

时间:2013-01-15 09:37:01

标签: php regex

这是我开始使用的正则表达式:

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

表达式应匹配以“DO”开头的任何字符串,“DO”后的字符串必须至少为1,最多为6个字符。

我的期望:

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

?<cmd>

是一个命名的子模式:匹配存储为关联数组。

2 个答案:

答案 0 :(得分:2)

为什么会这样? ? 试试^(DO)(.{1,6})$

答案 1 :(得分:1)

虽然documentation changelog说:

,但这似乎是一种后向兼容性问题
  

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

使用PHP 5.4.8,Windows IIS

这很好用:

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