![](/img/trans.png)
[英]Javascript Regexp replace multiple strings matching property names of another object literal
[英]Javascript parameterized strings: replace(RegExp, function) unexpected grouping / matching
正则表达式经常使我难以理解。 我正在努力了解分组的意外结果,并希望有人告诉我:
我正在使用包含十六进制颜色代码的字符串。 我在该字符串上使用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
属性。
因此,您的正则表达式在寻找数字,而不是十六进制。 假设您要在一个输入中查找两个颜色代码,我会选择
^([0-9A-FA-F] {6})^ 0-9A-FA-F] *([0-9A-FA-F] {6})
这样,您就可以从6个十六进制字符开始,然后是任意数量的非十六进制字符(包括无),然后是另外6个十六进制字符。 这也说明了大写和小写的十六进制字母。 然后括号将分别捕获第一种颜色和第二种颜色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.