PHP正規表示式問題?
阿神
阿神 2017-05-16 13:07:23
0
1
396

當我使用正規表示式的時候發現了很詭異的現象,如下:

  • [--ˇ]

  • [_-ˇ]

  • [=-ˇ]

就是第一個不能匹配字母,第二個能匹配字母,第三個能匹配字母和斜杠

我只是希望在字符串裡出現這幾個特殊字符就替換,沒想到連字母都替換了,我知道能用其他寫法實現此需求,但我就是不知道這樣寫為什麼會這麼詭異,大神們解釋下這個正則。

臥槽還有這幾個,寫個正則這麼費勁兒

  • [+-~]

  • [i-~]

  • [--~]

  • [_-~]

  • [=-~]

  • ...

有興趣就跟hello world配對測試一下。

為什麼會這樣?

阿神
阿神

闭关修行中......

全部回覆(1)
我想大声告诉你

首先,第一個例子應該不是個合法正規則,所以不會有結果。

而後面的兩個例子中的正則是最基礎的 [a-z] 語法,表示匹配從一個字符到另一個字符編碼之間的所有字符。

兩個例子中,起始字元分別是 _=, 终止字符都是全角符号 ˇ
全角符號編碼大於所有 ASCII 編碼,所有在匹配 AscII 編碼時都匹配,不用多考慮,我們查下起始字元的 ASCII 編碼。

ASCII 編碼中:
/ < 0-9 < = < A-Z < < _ < a-z

所以, [=-ˇ] 能匹配大写字母、反斜杠、小写字母,[_-ˇ]只能匹配小寫字母,兩者都不能匹配正斜杠和數字。


其次,這麼奇怪的正則還是不要寫為好,很難維護。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板