htaccess中常用的正则表达式
2013-10-20 19:14
190 查看
今天整理了一些在.htaccess中常用的正则表达式。由于我是自学的,所以难免有不足的地方。在学习过程中主要看了:Apache模块 mod_rewrite、正则表达式30分钟入门教程。如果你觉的我写得太水或是无法满足你强大的求知欲可以看以上两个。
[chars] —— 字符类: “chars”中的任意一个字符【也可用[0-5]表示0到5中的任意数】
[^chars] —— 字符类: 不在”chars”中的字符
text1|text2 —— 选择: text1 或 text2
* —— 前面的字符出现 0 或 N 次(N > 0) 【出现或不出现】
+ —— 前面的字符出现 1 或 N 次(N > 1) 【必须出现至少一次】
{n} —— 前面的字符重复n次
{n,} —— 前面的字符重复n次或更多
{a,b} —— 前面的字符重复a至b次
例子:
1、.* —— 任何长度的字符
2、<a[^>]+> —— 匹配用尖括号括起来的以a开头的字符串。
(常用于设置一个选择的边界,或用于生成后引用:
在RewriteRule中可以用 $N 引用第N个分组)
小测试:能看懂下面一长串的含义吗?
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
$ —— 匹配字符串的结束
【^$锚可以用于确定字符串,既可以用于确定起点或终点】
例子:^$ —— 空字符串
说明:如果你想输入的是元字符本身的话,比如你想输入.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.
文本
. —— 任意一个单字符[chars] —— 字符类: “chars”中的任意一个字符【也可用[0-5]表示0到5中的任意数】
[^chars] —— 字符类: 不在”chars”中的字符
text1|text2 —— 选择: text1 或 text2
量词
? —— 前面的字符出现 0 或 1 次 【不出现或只出现一次】* —— 前面的字符出现 0 或 N 次(N > 0) 【出现或不出现】
+ —— 前面的字符出现 1 或 N 次(N > 1) 【必须出现至少一次】
{n} —— 前面的字符重复n次
{n,} —— 前面的字符重复n次或更多
{a,b} —— 前面的字符重复a至b次
例子:
1、.* —— 任何长度的字符
2、<a[^>]+> —— 匹配用尖括号括起来的以a开头的字符串。
分组
(text) —— text 组(常用于设置一个选择的边界,或用于生成后引用:
在RewriteRule中可以用 $N 引用第N个分组)
小测试:能看懂下面一长串的含义吗?
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
锚
^ —— 匹配字符串的开始$ —— 匹配字符串的结束
【^$锚可以用于确定字符串,既可以用于确定起点或终点】
例子:^$ —— 空字符串
转义
\c —— 对给定的字符c进行转义【比如对”.[]()”进行转义,既排除他们本身的定义,最常用的是/.】说明:如果你想输入的是元字符本身的话,比如你想输入.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.