jQuery + Regex:如何改变" $ 1.23"到" 1.23%&#34 ;?

时间:2014-06-16 21:28:48

标签: jquery regex

当用户点击表单的某个部分时,我想要替换的选项中包含文本。我希望所有出现的$...都替换为...%,反之亦然,如下所示:

    $("#coupon_type option").on("click", function(){
        var coupon_type = $(this).val();
        if (coupon_type == 'FreeShippingCoupon') {
            $(".coupon_value_div").hide();
        } else if (coupon_type == 'PercentageCoupon') {
            //replace all the '$ ...' with '... %'
            //for text in $("#coupon_value option").text()
            $(".coupon_value_div").show();
        } else if (coupon_type == 'FlatCoupon') {
            //replace all the '... %' with '$ ...'
            $(".coupon_value_div").show();
        }
    });

我想替换此选择中的文字:

    <select id="coupon_value" name="coupon[value]">
        <option value="5">$5.00</option>
        <option value="10">$10.00</option>
        <option value="15">$15.00</option>
        <option value="20">$20.00</option>
        <option value="25">$25.00</option>
        <option value="30">$30.00</option>
        <option value="35">$35.00</option>
        <option value="40">$40.00</option>
        <option value="45">$45.00</option>
        <option value="50">$50.00</option>
        <option value="55">$55.00</option>
        <option value="60">$60.00</option>
        <option value="65">$65.00</option>
        <option value="70">$70.00</option>
        <option value="75">$75.00</option>
        <option value="80">$80.00</option>
        <option value="85">$85.00</option>
        <option value="90">$90.00</option>
        <option value="95">$95.00</option>
    </select>

2 个答案:

答案 0 :(得分:3)

您可以使用text方法转换选项中的值,并使用正则表达式仅在文本是预期的情况下进行替换:

$('#coupon_value option').text(function(i, s){ return s.replace(/^\$(.+)$/, '$1%'); });

反过来说:

$('#coupon_value option').text(function(i, s){ return s.replace(/^(.+)%$/, '$$$1'); });

答案 1 :(得分:0)

舞步三步:

step1 = string.replace(/\$([0-9]+\.[0-9]+)/g, "DOLLAR$1");
step2 = step1.replace(/([0-9]+\.[0-9]+)%/g, "$$$1");
step3 = step2.replace(/DOLLAR([0-9]+\.[0-9]+)/g, "$1%");

解释

操作switch-a-roo,

  1. 第一个将$1.23更改为DOLLAR1.23
  2. 第二个将1.23%更改为$1.23(替换中的多个$是因为您需要$来逃避文字$
  3. 第三个将DOLLAR1.23更改为1.23%