我試圖為一組規則撰寫 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)
uj5u.com熱心網友回復:
您誤導了自己,因為作為人類,您知道“01”、“02”等是一個數字序列。正則運算式不關心數字,他們關心字符。[01-09]并不表示“01 到 09”,而是表示“0;或 1 到 0;或 9”——這顯然沒有意義。
如果你逐個字符分解它,你有:
- “0”
- “X”
- “0”或“1”(在正則運算式中, set
[01]) - “0”到“9”(字符范圍
[0-9]),或“A”到“F”([A-F]) - 加上“0x7F”的特殊情況
所以你可以例如寫:
0x[01]([0-9]|[A-F])|0x7F
您可以將兩個范圍合二為一,給出:
0x[01][0-9A-F]|0x7F
分享0x實際上并沒有使它更短:
0x([01][0-9A-F]|7F)
uj5u.com熱心網友回復:
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][0-9A-F]|7F)
(?i)您可能希望使用模式修飾符使此正則運算式不區分大小寫。例如:
(?i)0x([01][0-9A-F]|7F)
或者使用NC( nocase) 標志和.htaccess.
順便說一句,這與我對您之前的問題的回答中使用的正則運算式基本相同:
Stop redirecting page if the url has control character
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465829.html
