如何将价格包装在跨度正则表达式中?
How to wrap price in span regexp?
我正在尝试将某件商品的价格包装在一个范围内。现在 RegExp 包装数字而不是 $(美元符号)。我需要一个包含整个价格的正则表达式。
HTML
<fieldset>
<label>
<input>Thing .99</input>
</label>
</fieldset>
JQUERY
var rxp = new RegExp("([0-9]+\.?[0-9]+)", "gm");
$( "fieldset label" ).each(function() {
var $this = $(this);
var content = $this.html();
console.log($(this).html());
$this.html(content.replace(rxp, "<span></span>"));
});
这不是正确的做法。 html()
方法将 return 你 html 标记,但改变它不会改变 DOM。相反,您应该清空 parent 并在其中附加新的跨度。另外你用错了 input
标签,它不能有 children,你应该将值设置为 value
attr:
// HTML
<fieldset>
<label>
<input value="Thing .99" />
</label>
</fieldset>
// JavaScript
var priceRegExp = /^.*($[0-9](\.[0-9]{2})?).*$/;
$("fieldset label").each(function() {
var $this = $(this);
var inputVal = $this.children('input').prop('value');
var price = priceRegExp.exec(inputVal)[1];
$this.empty().append('span').text(price);
});
我正在尝试将某件商品的价格包装在一个范围内。现在 RegExp 包装数字而不是 $(美元符号)。我需要一个包含整个价格的正则表达式。
HTML
<fieldset>
<label>
<input>Thing .99</input>
</label>
</fieldset>
JQUERY
var rxp = new RegExp("([0-9]+\.?[0-9]+)", "gm");
$( "fieldset label" ).each(function() {
var $this = $(this);
var content = $this.html();
console.log($(this).html());
$this.html(content.replace(rxp, "<span></span>"));
});
这不是正确的做法。 html()
方法将 return 你 html 标记,但改变它不会改变 DOM。相反,您应该清空 parent 并在其中附加新的跨度。另外你用错了 input
标签,它不能有 children,你应该将值设置为 value
attr:
// HTML
<fieldset>
<label>
<input value="Thing .99" />
</label>
</fieldset>
// JavaScript
var priceRegExp = /^.*($[0-9](\.[0-9]{2})?).*$/;
$("fieldset label").each(function() {
var $this = $(this);
var inputVal = $this.children('input').prop('value');
var price = priceRegExp.exec(inputVal)[1];
$this.empty().append('span').text(price);
});