括号内的正则表达式单词边界替代方法不起作用?

时间:2013-11-15 11:11:48

标签: php regex

“边界”这个词我无法理解。

$input="157-XYZ";
preg_match("/[^\d+\-]\bRDS|xyz|ABC\b/i", $input, $output);

上述preg_match$input中的XYZ匹配。

但是,如果我将替代方案放在括号/[^\d+\-]\b(RDS|xyz|ABC)\b/i内,它似乎没有返回任何内容。我不能在这里使用括号从$output[1]检索结果吗?

1 个答案:

答案 0 :(得分:1)

这个正则表达式错了:

preg_match("/[^\d+\-]\bRDS|xyz|ABC\b/i", $input, $output);

自:[^\d+\-]表示匹配以外的所有内容:

  1. 一个数字
  2. 文字+
  3. 文字-
  4. 你可以使用:

    preg_match("/^\d+\-\b(RDS|xyz|ABC)\b/i", $input, $output);