搜尋

首頁  >  問答  >  主體

PHP正規表示式問題?

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

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

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

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

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

為什麼會這樣?

阿神阿神2792 天前422

全部回覆(1)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:09:23

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

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

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

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

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


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

    回覆
    0
  • 取消回覆