2015-07-21 149 views
-7

我有這樣一段代碼使用替換的Javascript替換字符()

<html> 
    <head> 
     <title>JavaScript String replace() Method</title> 
    </head> 
    <body> 
     <script type="text/javascript"> 
     var re = /(\w+)\s(\w+)/; 
     var str = "zara ali"; 
     var newstr = str.replace(re, "$2, $1"); 

     document.write(newstr); 
     </script> 
    </body> 
</html> 

誰能解釋請,這是什麼,它是如何看?

var re = /(\w+)\s(\w+)/; 

而且在str.replace(re, "$2,$1);,什麼是港幣$ 16 & $ 1嗎?

+1

查找有關正則表達式的教程。 – elclanrs

+2

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions – j08691

+0

你在那個變量裏看到的是一個正則表達式。一個簡單的谷歌搜索應該告訴你很多。 – SarathChandra

回答

0

請參考我在上面發佈的評論中的鏈接來了解正則表達式。 但是要向你解釋你發佈的代碼實際上是什麼......

var re = /(\w+)\s(\w+)/;是一個正則表達式。前緣和後/是分隔符和實際上沒有任何與更換回事以外告訴解釋什麼實際的表現是:(\w+)\s(\w+)

  • ()被稱爲捕獲括號,並記住通過瀏覽器,以便他們可以在以後的更換中使用。第一組分配給$ 1,第二組分配給$ 2等。

  • \w匹配包括下劃線的任何字母數字字符。這相當於爲[A-ZA-Z0-9 _]

  • +手段運用前面的表達式一次或多次

  • \s一個空格字符匹配

所以你的表情說看在字符串"zara ali"處輸入一個或多個字母數字字符(並將它們記憶爲一組,然後將它們存儲在$1中),然後輸入一個空白字符,然後選擇另一組一個或多個字母數字字符(並將它們記憶爲一組,他們在$2)。如果匹配成功,請將字符串替換爲字符串"$2, $1",這是真正的第二個捕獲組,然後是逗號和空格,並以第一個捕獲組結束。

所以,你開始:"zara ali"和結束與"ali, zara"

0

結帳http://regexr.com/3beap。該網站在處理正則表達式時非常有用。如果您將鼠標懸停在表達式的不同部分(藍色欄下方),它會告訴您每個部分的功能。如果你有不同的替代部分(底部灰色條),它會告訴你每個部件的功能。

還有很多正則表達式教程,您可以通過Google搜索找到涵蓋基本內容的教程。

但付諸簡單的英語你的代碼的作用是:

  • \w+匹配一個或多個字母
  • \s一個空格
  • ()匹配捕獲匹配供以後參考,並節省了他們$#其中#是一個數字1-9,從1開始,並且按照捕獲的順序逐個增加
  • so $1是第一個()$2是第二個()

  • 在你的榜樣

    $1zara$2ali

  • 在更換所有你正在做的是匹配的正則表達式
  • ,捕獲它的輸出,以$1$2,然後用「$ 2,$ 1替換它「變成」阿里,扎拉「。

我希望這有助於。

0

腳本是指在形式"FirstName LastName"變換一個字符串轉換成"LastName, FirstName",使用正則表達式。該生產線

var re = /(\w+)\s(\w+)/; 

創建正則表達式,這裏是它如何工作的,#表示註釋細分:

/  # open regular expression 
    ( # open a capturing group, aliased as $1 
    \w # match any alphanumeric character or underscore 
    +  # match a single or multiple occurrences of the preceding token 
)  # close capturing group $1 
    \s # match a single space 
    ( # open capturing group $2 
    \w+ # match any single or multiple alphanumeric character or underscore 
    ) # close capturing group $2 
/ # close expression 

var newstr = str.replace(re, "$2, $1"); 

應用正則表達式str ,提取捕獲組,反轉它們,並在兩者之間添加逗號。