2015-10-14 101 views
0

我試圖在每個音節的中間添加'ig'。例如,超(蘇和全)將成爲sigupiger(四姑和piger)這是我到目前爲止的代碼:加盟後重複的正則表達式

function iggify(text) { 
    var iggEdText = text.split(/((a|e(?!$)|i(?!ng$)|o|u|y){1,3}|le$|ing$)/ig).join("ig"); 
    document.getElementById('resultField').innerHTML = iggEdText; 
} 

Demo codepen

我的正則表達式重複兩次。例如文字變成wigoigo,而不是簡單的wigords。 我怎樣才能讓它只重複一次?

+0

什麼是你想使這個功能呢?在輸入字符串中的每個單詞的第一個輔音之後添加「ig」? – BDawg

+0

我試圖在單詞的每個音節之後添加'ig'。 – xxkazunarixx

+0

Does ['var iggEdText = text.replace(/(?: a | e(?!$)| i(?!ng $)| o | u | y){1,3} | le $ | ing $/ig,「ig $ &");'](http://codepen.io/anon/pen/PPJKGZ)解決了這個問題? –

回答

0

而是分裂的加盟,您只需將ig到可以與.replace()可以輕鬆實現元音:

text.replace(/(?:a|e(?!$)|i(?!ng$)|o|u|y){1,3}|le$|ing$/ig, "ig$&"); 
//   ^^^ - Non-capturing group      ^^ - The whole matched text 

我刪除了外側拍攝組,改變了第二個非捕獲。由於我們用整個匹配來替換,我在替換部分中使用$&反向引用(即,我在替換過程中恢復了匹配的文本,並在其之前添加了ig)。

請參見下面的整個片段:

function iggify(text) { 
 
    var iggEdText = text.replace(/(?:a|e(?!$)|i(?!ng$)|o|u|y){1,3}|le$|ing$/ig, "ig$&"); 
 
    document.getElementById('resultField').innerHTML = iggEdText; 
 
}
<h1> 
 
    Convert words to wig-ords! 
 
</h1> 
 
<div> 
 
    <input id="inputBox" placeholder="Type words to iggify here"> 
 
</div> 
 
<div> 
 
    <button id="searchButton" onclick='iggify(document.getElementById("inputBox").value)'>Iggify!</button> 
 
    <span id="resultField"></span> 
 

 

 
</div> 
 
</body>

+1

我想我會刪除CSS,它看起來更乾淨。 /匿名/筆/ PPJKGZ。 –