function del(str){
var reg = /(\w|\/)\1/;
while(reg.test(str)){
str = str.replace(reg, "$1");
}
return str;
}
alert(del("woshiii_______//////////asssdwkskkkkkaa"));
這個就是傳說中的去重正則。那麼,要理解它,咱們必須掌握如下幾個基本概念:spa
一、\w 它的意思就是匹配大小寫字母、數字、下劃線這幾類字符,換種寫法就是[a-zA-Z0-9_];code
二、轉義符\,相信這個你們都清楚 因此\/就是匹配斜槓。blog
三、分組(),在上面的例子中(\w|\/)就表明一個分組,分組所匹配到的字符串會被儲存起來,隨後能夠用\1獲取到,而在replace方法裏,能夠用$1取到,相應的 多個分組就是由\1....\9獲取,同理$1...$9。字符串
OK,明確以上概念,咱們就好理解了。it
首先看正則:reg = /(\w|\/)\1/; 第一個分組裏匹配的就是概念1裏所說的東西,或者匹配一個斜槓,那麼,當對字符串進行匹配的時候,匹配了的結果就已經存儲起來了,好比說匹配到 i 字母,那麼\1指的就是匹配到的i字母。'io
因此,根據這個正則,第一個匹配到的就是 i i兩個字母。因而,經過replace方法,咱們會把匹配到的 i i兩個字母替換成"$1"。function
$1是什麼呢?根據概念3,就是第一個分組匹配的東西,在這也就是 i 因此,結果就是把字符串裏的'ii'換成了'i',從而達到了去重的效果。class
固然了,這隻替換了1個i,後面重複的字符就須要用while循環,經過test方法驗證,若是存在重複字符就循環執行剛纔的步驟。最後獲得的就是想要的結果。test