我用這個很簡單的正則表達式:爲什麼使用的分隔符影響正則表達式的有效性?
^[\x20-\x7E]+$
當我嘗試用一些PHP正則表達式函數使用它,因爲preg_match()這樣它唯一的情況下拋出時警告我使用~
字符(波浪)作爲分隔符。
所以,以下行的執行進展順利
preg_match("/^[\x20-\x7E]+$/", $s); # delimiter "/"
preg_match("!^[\x20-\x7E]+$!", $s); # delimiter "!"
preg_match("#^[\x20-\x7E]+$#", $s); # delimiter "#"
但出於某種原因,這條線
preg_match("~^[\x20-\x7E]+$~", $s); # delimiter "~"
拋出一個警告
Warning: preg_match(): Unknown modifier ']' in some_script.php on line XX
注:這只是發生時,它的用雙引號!
我一直使用代字號作爲分隔符,從來沒有面對它的問題,直到這種情況下,真的想知道爲什麼發生這種情況。找不到代字號在正則表達式中有一些特殊的含義(我現在99%確定它沒有),或者它只是一個錯誤。
我當然可以解決這個問題,但問題是:代字號和其他任何分隔符有什麼區別?
只需使用其他的東西! – GordonM
@GordonM問題不是如何解決這個問題,這是爲什麼它會發生? ;) – Wh1T3h4Ck5
嗯,它認爲'$〜'是一個變量?嘗試單引號...''^^[\ x20- \ x7E] + $〜'' –