2009-06-15 54 views
1

我已經看到了使用後的人做到以下幾點:獲取正則表達式的結果在if語句

if (/Firefox\/(\+S)/.test(userAgent)) { 
    firefox = RegExp.$1; 
} 

我知道(八九不離十)正則表達式做什麼,但我真的不知道如何將其訪問RegExp.$1

而作爲一個側面說明:

if (/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) { 
    if (RegExp.$1 == "NT") { 
     switch (RegExp.$2) { 

什麼$1$2之間的區別?

回答

4

$ 1和$ 2有什麼區別?

這些是到captured groups(由正則表達式所捕獲)

正則表達式的JavaScript flavor指組#1用$ 1的參考文獻,和組#2爲$ 2。

Win(?:dows)?([^do]{2})\s?(\d+\.\d+)? 
    ^  ^  ^
    |   |   | 
    |   group#1  group#2 
    | 
    ignored group (?: means non-capturing) 
+0

漂亮的圖,和漂亮的鏈接(: 感謝 – peirix 2009-06-15 10:53:24

0

RegExp是每次運行RegExp時都會更新的全局對象。 RexExp。$ 1將包含匹配的最後一個模式中相應的括號組相匹配的文本。

對於旁註:$ 1包含的是括號中的正則表達式的第一部分,$ 2秒等......