2017-09-18 14 views
1

文書内のすべての大文字を検索する正規表現があります。それを集めて配列に入れても問題ありません。JS配列の検索と置換?

私が抱えている問題は、配列に取り込まれた各アイテムの周囲にスパンを含めて、その結果を表示することです。私は様々なことを試みました。

私は完全に迷っています。どんな助けもありがとうございます。ここに私の最後の試み

var allCaps = new RegExp(/(?:[A-Z]{2,30})/g); 
    var capsArray = []; 
    var capsFound; 

    while (capsFound = allCaps.exec(searchInput)) { 
     capsArray.push(capsFound[0]); 
    } 


    //for(var x = 0; x < capsArray.length; x++){ 

      //var test = ; 
      capsArray.splice(0, '<span style="color:green">'+ capsArray +'</span>'); 

    //} 
} 
+2

途中で失われる他の誰のための私の最終的な解決策あなたは 'capsFound === allCaps.exec(searchInputを)もしかして' –

答えて

1

を使用すると、配列に結果を必要ですか?

str.replace(/([A-Z])/g, '<span>$1</span>') 

例:いない場合は、修正正規表現を使用してstr内のすべてのキャップをラップすることができます

str.split(/[^A-Z]+/g).map(x => `<span>${x}</span>`) 
:配列は、何らかの理由のために必要とされる場合

'A--B--C''<span>A</span>---<span>B</span>---<span>C</span>'

なり

例:

'A--B--C'['<span>A</span>', '<span>B</span>', '<span>C</span>']

+1

がかかる '.replace'のバージョンもありますコールバック関数 – Alnitak

5

はあなたがspliceを使用して、そのような全体の配列の要素を変換することはできませんでした - あなたの代わりに.mapを使用することができます。

capsArray = capsArray.map(c => '<span style="color:green">' + c + '</span>'); 
0

になりました。

相続人

var allCaps = new RegExp(/(?:[A-Z]{2,30})/g); 
var capsArray = []; 
var capsFound; 

while (capsFound = allCaps.exec(searchInput)) { 
    capsArray.push(capsFound[0]); 
} 

if(capsArray.length > 0){ 
    resultsLog.innerHTML += "<br><span class='warning'>So many capitals</span><br>"; 
    searchInput = document.getElementById('findAllErrors').innerHTML; 
    searchInput = searchInput.replace(/([A-Z]{3,30})/g, '<span style="background-color:green">$1</span>'); 
    document.getElementById('findAllErrors').innerHTML = searchInput; 
} 
else { 
    resultsLog.innerHTML += ""; 
}