这是我的起始正则表达式不起作用:
'/^(DO)(?<cmd>.{1,6})$/'
该表达式应匹配任何以“DO”开头的字符串,“DO”之后的字符串长度必须最少为 1 个字符,最多为 6 个字符。
我的期望:
DO // NOT A MATCH
DO123 // MATCH
DOaaa123 // MATCH
DOaaa123b // NOT A MATCH
?<cmd>
是一个命名的子模式:匹配存储为关联数组。
为什么会有?? 尝试^(DO)(.{1,6})$
似乎这是一个向后兼容性问题,尽管文档更改日志说:
5.2.2 命名子模式现在接受语法 (?) 和 (?'name') 以及 (?P)。仅接受以前的版本 (?P)。
使用 PHP 5.4.8,windows IIS
这工作正常:
'/^(DO)(?P<cmd>.{1,6})$/'