正規表現はよくわかりません。グループ化による予期しない結果を理解するのに苦労しています。誰かに教えてもらいたいです:
- 意図したとおりに機能しない理由
- 期待される結果を達成する方法
環境:
私は16進カラーコードを含む文字列を扱っています。その文字列を使用replace()
して、一致したカラー コードを HTML を返す関数 (パラメーター化された文字列のようなもの) に "フィード" します。パラメータの 1 つは問題ありませんが、もう 1 つは文字列全体に一致しますか?
いくつかのコード:
簡単な例の JSFiddleを次に示します (注意: 16 進コードまでは文字を使用しません)。
フィドルのコード:
HTML:
<p>Please enter two hex color codes (digits only)</p>
<input id="colorsInput" type="text"></input>
<button id="booyah">Roll</button>
<p>Teh colorz</p>
<div id="colors"></div>
<p>Teh source</p>
<div id="html"></div>
JS:
$(document).ready(function() {
function parameterizedHtml(p1, p2) {
return '<div style="background-color:#' + p1 + '; width:50px; height:50px;"> </div><div style="background-color:#' + p2 + '; width:50px; height:50px;"> </div>';
}
$('#booyah').click(function() {
var colorsString = $('#colorsInput').val();
var html = colorsString.replace(/(\d{6}).*(\d{6})/, parameterizedHtml);
$('#html').text(html);
$('#colors').html(html);
});
});
出力:
<div style="background-color:#548423 564212; width:50px; height:50px;"> </div><div style="background-color:#548423; width:50px; height:50px;"> </div>
background-color
最初の属性に注意してください。