匹配数字的麻烦

时间:2013-11-29 00:36:28

标签: php regex preg-match

我在PHP中遇到了正则表达式的问题。这是我正在使用正则表达式的代码:

<br />Level 163 Operative </div> <div class="sectionBar">

这是preg_match语句:

preg_match("/<br \/>Level ([0-300]) (.*) <\/div>      <div class=\"sectionBar\"><\/div>/i", $output, $op);
  $top = $op[1];
  echo "$top";

然而,当我尝试这个时,它不会回应任何东西。

2 个答案:

答案 0 :(得分:1)

这是一个匹配0-300;允许前导零,并且如果前面有一个否定符号,则特别排除该数字;或嵌入其他数字:

'/(?<!-)\b0*(?:300|[12][0-9]{2}|[1-9]?[0-9])\b/'

答案 1 :(得分:0)

以下是一系列可以帮助您的示例:

([1-3][0-9][0-9])

这将匹配100-399,不要使用[0-3]希望匹配100以下,因为它只匹配前导零(055但不是55)的数字

([1-2]\d{2})

匹配100-299(\ d匹配单个数字,与[0-9]相同)

([1-2]\d{2}|\d{2})

匹配10-299

([1-2]\d{2}|\d{2}|[1-9])

匹配1-299

([1-2]\d{2}|\d{2}|[1-9]|300)

匹配1-300

([1-2]?\d?\d|300)

1-300,更优雅的方式(前两位数可选?)

([1-2]?\d?\d)

简短版本,匹配0-399

(\d{1-3})

最短版本,匹配0-999(1-3位)