2016-04-15 67 views
0

所以基本上我想要做的是循環瀏覽html文檔中的每個單詞,並用'A'替換​​每個單詞的第一個字母,第二個倒數第二個字母'b'和最後一個字母'c',完全取代這個詞。我不確定正則表達式是否應該這樣做(我是否應該使用for循環並檢查每個字符?),但無論如何我會問。正則表達式得到每個單詞的中間部分javascript

目前我正在做:

document.body.innerHTML = document.body.innerHTML.replace(/\b(\w)/g, 'A');讓每個單詞

document.body.innerHTML = document.body.innerHTML.replace(/\w\b/g, 'c');的第一個字母來獲得每個單詞的最後一個字母

所以,如果我有字符串:Lorem ipsum dolor sit amet我可以目前使它Aorec Apsuc Aoloc Aic Amec,但我想在JavaScript中做Abbbc Abbbc Abbbc Abc Abbc

任何幫助非常感謝 - 正則表達式真的讓我困惑。

+1

爲什麼你不只是把每個單詞的長度,以儘可能多的BBB根據需要建立新的? –

+0

@ rock321987嗯,是啊雖然沒有關於這一點 - 我可能會循環並刪除3個或更少字符的單詞 – TomHill

+0

@RaphaelMüller - 是的,可能應該走了這條路線(因此我提到了循環的問題),但我已經(試圖)從樹屋學習正則表達式,並且對如何去做這件事感興趣:) – TomHill

回答

4

你幾乎明白了。

str = "Lorem ipsum dolor sit amet" 
 

 
str = str 
 
    .replace(/\w/g, 'b') 
 
    .replace(/\b\w/g, 'A') 
 
    .replace(/\w\b/g, 'c') 
 

 
document.write(str);

票友置換規則可以與一個回調函數,例如被處理

str = "Lorem ipsum dolor sit amet" 
 

 
str = str.replace(/\w+/g, function(word) { 
 
    
 
    if (word === "dolor") 
 
    return word; 
 
    
 
    return 'A' + 'b'.repeat(word.length - 2) + 'c'; 
 

 
}); 
 

 
document.write(str);

+0

感謝你的這一點,這並不直接關係到我的問題,而只是出於興趣,如果我想排除'多樂'從我的替代品中,我將如何在多步驟正則表達式中做到這一點? – TomHill

+1

@TomHill:更新... – georg

相關問題