2017-03-13 51 views
-1

我嘗試下面的JavaScript在瀏覽器的開發者控制檯:JavaScript的正則表達式的驚喜

s = "mysessionId=PsGymRfxWIQG9gjNGgRlKw" 
s.match("mysessionId=([^\s\;]+)") 

的結果有些驚訝:

["mysessionId=P", "P"] 

我所預料的()在正則表達式將會匹配整個「PsGymRfxWIQG9gjNGgRlKw」,而是隻匹配第一個字符「P」。

當我在perl中嘗試了正則表達式時,它確實匹配了整個sessionId。

任何想法爲什麼?

+1

問題是轉義'「mysessionId =([^ \ s \;] +)」===「mysessionId =([^ s;] +)」'。所以你必須這樣寫:'new RegExp(「mysessionId =([^ \\ s \\;] +)」)' –

回答

-1

我應該使用//而不是「」。

s.match(/mysessionId=([^\s\;]+)/) 

當我想出來的時候不得不笑。