2014-09-23 120 views
0

1這是什麼$ 3 $ 2 $ 1只表示在:的Javascript替換法澄清

var s = "The quick brown fox jumped over the lazy dog."; 
var re = /(\S+)(\s+)(\S+)/g; 
// Exchange each pair of words. 
var result = s.replace(re, "$3$2$1"); 
document.write(result); 

// Output: quick The fox brown over jumps lazy the dog. 

2和$ 0,$ 1,$ 2:

function f2c(s1) { 
    // Initialize pattern. 
    var test = /(\d+(\.\d*)?)F\b/g; 

    // Use a function for the replacement. 
    var s2 = s1.replace(test, 
     function($0,$1,$2) 
      { 
      return((($1-32) * 5/9) + "C"); 
      } 
     ) 
    return s2; 
} 
document.write(f2c("Water freezes at 32F and boils at 212F.")); 

// Output: Water freezes at 0C and boils at 100C. 

注意,感謝您的回覆,我明白了數字1,但數字2有點困難,我正在努力解決它。

感謝,

優素福

+0

[Submatch replacement pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter)。 – 2014-09-23 14:54:45

回答

6

1-在REG EXP,括號意味着捕捉模式和$ X表示參考捕捉到的元素:

var re = /(\S+)(\s+)(\S+)/g; 
      ^ ^^
      |  | | 
      $1 $2 $3 

在這個模式中,與$1$2$3替換它將採取3個匹配和反向它們,所以它將採取「快速」並將其變成「快速」。

2- $ 0引用整個匹配的子表達式。給定的函數不會使用$ 0和$ 2,而只需要$ 1將°F轉換爲C°

+0

謝謝,請參閱我的更新,我現在理解第一部分,但是2號令我困惑。 – Youssef 2014-09-23 15:03:53

+0

謝謝了現在:) – Youssef 2014-09-23 15:23:02

1

它代表了括號內的羣體。 $1是由第一個(\S+)匹配的表達式,$2是由(\s+)匹配的表達式,$3是最後一個組匹配的表達式。

1

在正則表達式中,一組括號指示引擎創建反向引用。然後將其存儲起來供您稍後使用,例如用於替換。後面的參考文獻編號爲1,2,3等。在你的情況下,$1指的是第一個\S+,$ 2指的是\s+和$ 3指的是最後的\S+

這裏,\S+匹配任何不是空白和空白\s+,所以我預計這方面的問題有$1等於The$2 = (空間)和$3 = quick。替換時,通過以與原始文件不同的順序使用反向引用,您實質上可以交換Thequick