正则表达式经常使我难以理解。我正在努力理解分组的意外结果,并希望有人告诉我:
- 为什么它没有按预期工作
- 我怎样才能达到预期的结果
语境:
我正在使用包含十六进制颜色代码的字符串。我使用replace()
该字符串将匹配的颜色代码“提供”给返回 HTML 的函数 - 一种参数化字符串。一个参数没问题,但另一个匹配整个字符串?
一些代码:
这是一个带有一个简单示例的 JSFiddle(请注意:就十六进制代码而言,不接受字母)。
小提琴的代码:
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
属性。