2016-04-15 18 views
0

基本的に私がやっていることは、HTML文書のすべての単語をループし、各単語の最初の文字を2番目の最後の文字である 'A'で置き換えることです'b'と最後の文字は 'c'で完全に置き換えられます。正規表現がこれを行う方法であるかどうかはわかりません(代わりにループを使用して各文字をチェックする必要がありますか?)とにかく私は尋ねます。Regexは各単語の中間部分を取得します

現在、私はやってる:Lorem ipsum dolor sit amet私ができる:

document.body.innerHTML = document.body.innerHTML.replace(/\b(\w)/g, 'A');は、各単語

document.body.innerHTML = document.body.innerHTML.replace(/\w\b/g, 'c');の最初の文字を取得するために、私は、文字列があった場合

だから、それぞれの単語の最後の文字を取得します現在はAorec Apsuc Aoloc Aic Amecとなっていますが、Abbbc Abbbc Abbbc Abc Abbcをjavascriptで実行したいと思います。

何か助けていただければ幸いです。正規表現は本当に私を混乱させます。

+1

? –

+0

@ rock321987 hmmmええ、私はおそらくループして3文字以下の単語を取り除くでしょう。 – TomHill

+0

@RaphaelMüller - はい、おそらくそのルートに行きました。 TreehouseからRegexを学習しようとしていて、あなたがそれをやり遂げる方法に興味を持っていました:) – 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);

置換規則は、例えば、コールバック機能を扱うことができるファンシーなあなただけの必要なBBB同じくらいで新しいものを構築し、各単語の長さを取ることはありませんなぜ

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

これはおかげで、これは私の質問に直接関係しませんが、私が 'dolor '私の交換から、私はどのように多段階の正規表現でそれを行うだろうか? – TomHill

+1

@TomHill:updated ... – georg

関連する問題