是否可以将量词与组一起使用?
例如。我想匹配类似的东西:
- 11%
- 09%
- %
- %
- g1%
- 8b% ...
模式是:2个字母或数字(混合或不混合)和一个以%结尾的字符串...
<?php
echo preg_match('~^([a-z]+[0-9]+){2}%$~', 'a1%'); // 0, I expect 1.
我知道,这个例子没有太多意义。一个简单的 [list]{m,n} 可以解决这个问题。尽可能简单地得到答案。
是否可以将量词与组一起使用?
例如。我想匹配类似的东西:
模式是:2个字母或数字(混合或不混合)和一个以%结尾的字符串...
<?php
echo preg_match('~^([a-z]+[0-9]+){2}%$~', 'a1%'); // 0, I expect 1.
我知道,这个例子没有太多意义。一个简单的 [list]{m,n} 可以解决这个问题。尽可能简单地得到答案。
您肯定可以将量词应用于组。例如,我有字符串:
HouseCatMouseDog
我有正则表达式:
(Mouse|Cat|Dog){n}
n
任何数字在哪里。您可以更改n
此处的值。
至于您的示例(是的,[list]{m,n}
会更简单),它只有在有一个或更多字母,后跟一个数字或更多时才有效。因此,只有g1
将匹配。
您不需要使用 2 个字符类,只有一个可以完成您的工作。
echo preg_match('~^([a-z0-9]{2})%$~', 'a1%');
正则表达式含义
^ => 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