如何将价格包装在跨度正则表达式中?

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);
});