我已经尝试为规则集编写htaccess。下面是我要匹配的规则模式
0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07|0x08|0x09|0x0A|0x0B|0x0C| 0x0D|0x0E|0x0F|0x10|0x11|0x12|0x13|0x14|0x15|0x16|0x17|0x18|0x19| 0x1A|0x1B|0x1C|0x1D|0x1E|0x1F|0x7F
我试过0x([01-09]|[0A-0F]|[10-19]|[1A-1F]|7F)
0x([01-09]|[0A-0F]|[10-19]|[1A-1F]|7F)
zpf6vheq1#
你误导了自己,因为作为一个人,你知道“01”,“02”等是一个数字序列。正则表达式不关心数字,他们关心的是字符。[01-09]并不意味着“01到09”,它意味着“0;或1到0;或9”-这显然没有意义。如果您将其逐字符分解,则会得到:
[01-09]
[01]
[0-9]
[A-F]
例如,你可以这样写:
0x[01]([0-9]|[A-F])|0x7F
您可以将两个范围合并为一个,得到:
0x[01][0-9A-F]|0x7F
共享0x实际上并不会使其更短:
0x
0x([01][0-9A-F]|7F)
4si2a6ki2#
0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07|0x08|0x09|0x0A|0x0B|0x0C| 0x0D|0x0E|0x0F|0x10|0x11|0x12|0x13|0x14|0x15|0x16|0x17|0x18|0x19| 0x1A|0x1B|0x1C|0x1D|0x1E|0x1F|0x7F这已经是一个正则表达式。您可以完全按照编写的方式使用它(作为正则表达式的一部分)。但可以简化为:
您可能希望使用(?i)模式修饰符使此正则表达式不区分大小写。例如:
(?i)
(?i)0x([01][0-9A-F]|7F)
或者在.htaccess中使用带有mod_rewrite指令的NC(nocase)标志。顺便说一句,这基本上与my answer中使用的正则表达式相同,以回答您前面的问题:Stop redirecting page if the url have control character
.htaccess
NC
nocase
2条答案
按热度按时间zpf6vheq1#
你误导了自己,因为作为一个人,你知道“01”,“02”等是一个数字序列。正则表达式不关心数字,他们关心的是字符。
[01-09]
并不意味着“01到09”,它意味着“0;或1到0;或9”-这显然没有意义。如果您将其逐字符分解,则会得到:
[01]
)[0-9]
),或“A”到“F”([A-F]
)例如,你可以这样写:
您可以将两个范围合并为一个,得到:
共享
0x
实际上并不会使其更短:4si2a6ki2#
0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07|0x08|0x09|0x0A|0x0B|0x0C| 0x0D|0x0E|0x0F|0x10|0x11|0x12|0x13|0x14|0x15|0x16|0x17|0x18|0x19| 0x1A|0x1B|0x1C|0x1D|0x1E|0x1F|0x7F
这已经是一个正则表达式。您可以完全按照编写的方式使用它(作为正则表达式的一部分)。
但可以简化为:
您可能希望使用
(?i)
模式修饰符使此正则表达式不区分大小写。例如:或者在
.htaccess
中使用带有mod_rewrite指令的NC
(nocase
)标志。顺便说一句,这基本上与my answer中使用的正则表达式相同,以回答您前面的问题:
Stop redirecting page if the url have control character