组和量词{m,n}

时间:2013-05-23 14:07:13

标签: php regex preg-match regex-group quantifiers

是否可以在组中使用量词?

例如。我希望匹配以下内容:

  • 11%
  • 09%
  • AA%
  • ZY%
  • G1%
  • 图8b% ...

模式是:2个字母或数字(混合或不混合)和结束字符串的%...

<?php
echo preg_match('~^([a-z]+[0-9]+){2}%$~', 'a1%'); // 0, I expect 1.

我知道,这个例子并没有多大意义。一个简单的[list] {m,n}就可以解决这个问题。只是为了得到答案,这很简单。

2 个答案:

答案 0 :(得分:1)

您确定可以将量词应用于群组。例如,我有字符串:

HouseCatMouseDog

我有正则表达式:

(Mouse|Cat|Dog){n}

n是任何数字。您可以随意更改n here的值。

至于你的例子(是的,[list]{m,n}会更简单),它只会在有一个或多个字母表,后跟一个或多个数字时起作用。因此,只有g1会匹配。

答案 1 :(得分:0)

你不需要使用2个字符的课程,只有一个人能胜任你的工作。

echo preg_match('~^([a-z0-9]{2})%$~', 'a1%'); 

RegExp含义

^ => It will match at beggining of the string/line
(
    [a-z0-9] => Will match every single character that match a-z(abcdefghijklmnopqrstuvwxyz) class and 0-9(0123456789) class.
    {2} => rule above must be true 2 times
) => Capture block
% => that character must be matched after a-z and 0-9 classes
$ => end of string/line