【问题标题】:preg_match string starting with 'DO' and followed by any characterspreg_match 字符串以 'DO' 开头,后跟任何字符
【发布时间】:2013-01-15 09:37:00
【问题描述】:

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

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

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

我的期望:

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

?<cmd>

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

【问题讨论】:

  • 你试过类似'/^(DO)(.+){1,6}$/';

标签: php regex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    似乎这是一个向后兼容性问题,尽管documentation changelog 说:

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

    使用 PHP 5.4.8,windows IIS

    这很好用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2021-12-06
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      相关资源
      最近更新 更多