正则表达式中星号*、加号+和问号?的区别
分类 网站技术/村民张先生 发布于 2014-07-28 18:11
*代表{0,} +代表{1,} ?代表{0,1}
以Nginx网址重写(伪静态)中的正则为例:
rewrite ^/tag-([0-9]+)-1\.html$ /misc.php?mod=tag&id=$1 last;
其中 [0-9]+ 表示匹配0~9中的任意数字,并且至少1位。如果是*号,表示任意位数并且可以不存在。如果是?号,表示0~1位。
如果至少需要2位数,最多8位数,怎么写呢? ([0-9]{2,7}) 即可。但需要注意,Nginx伪静态规则中如果包含大括号,必须用英文引号将这段规则包起来,否则Nginx将无法启动。如下:
rewrite "^/tag-([0-9]{2,7})-1\.html$" /misc.php?mod=tag&id=$1 last;
/2017-11-28 18:55赞