1. 程式人生 > >正則的反向引用

正則的反向引用

所謂反向引用其實就是 \1、\2 ... ... 這些,他的作用相當於引用“一組規則”;那麼什麼叫一組規則呢?舉個例子:

/([a-z]\d)-\d(123)\1/

這裡有兩組小括號(),每一組小括號就是所謂的一組;因此這個正則中的\1指的便是

([a-z]\d)

因此這個正則看似等價於(實際不等價,下面提說到)

/([a-z]\d)-\d(123)([a-z]\d)/

同理\2 \3 也是如此。

接下來說說反向引用有這麼實際用途,還是舉個例子:

從一個string中提取連續重複的單詞

let str = 'i i am a coder, i like like coding and my my friend like sports !'
console.log(str.match(/([a-z]+)\s+\1/g))
// ["i i", "like like", "my my"]

沒錯是不是發現問題了:當([a-z]+)匹配了內容後,後面的\1 要匹配的是與第一組規則匹配到的內容一樣的內容。

ok,廢話多了,歡迎指正。