0

这是我的起始正则表达式不起作用:

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

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

我的期望:

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

?<cmd>

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

4

2 回答 2

2

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

于 2013-01-15T09:47:12.373 回答
1

似乎这是一个向后兼容性问题,尽管文档更改日志说:

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

使用 PHP 5.4.8,windows IIS

这工作正常:

'/^(DO)(?P<cmd>.{1,6})$/'
于 2013-01-15T10:13:46.037 回答