如何使用javascript和正则表达式更新选择框的文本?
我有一个标有“活动价值”的选择框,里面有美元价值。它们看起来像这样($1,$2,$3,…)。我有另一个选择框,当它被更改时,需要从“campaign_value”中获取更新的值。下面是我到目前为止所拥有的 HTML如何使用javascript和正则表达式更新选择框的文本?,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个标有“活动价值”的选择框,里面有美元价值。它们看起来像这样($1,$2,$3,…)。我有另一个选择框,当它被更改时,需要从“campaign_value”中获取更新的值。下面是我到目前为止所拥有的 HTML <select id="campaign_value" name="campaign_value"> <option value="1">$1</option> <option value="2">$2</opti
<select id="campaign_value" name="campaign_value">
<option value="1">$1</option>
<option value="2">$2</option>
<option value="3">$3</option>
</select>
<select id="campaign_subject" name="campaign_subject">
<option value="You received $1 for food!">You received $1 for food!</option>
</select>
我错过了什么?我的正则表达式的美元金额设置正确吗?试试看@
大概是这样的:
$('#campaign_value').change(function(){
var replacement = $(this).val();
var regex = /\d+/;
$('#campaign_subject option').each(function() {
var r = $(this).text().replace(regex,replacement);
$(this).text(r).val(r);
});
});
简单的正则表达式,没有什么特别的。尝试使用下一个正则表达式:
// for replace all entries of $123 or $123.4 or $123.45
// (maximum three digits before dot (if exist)
// and maximum two digits after dot (if exist)
var regex = /\$\d{1,3}(\.\d{1,2})?/g;
// same as above but no maximum digits before dot
var regex = /\$\d+(\.\d{1,2})?/g;
// or without /g to replace only first occurence
var regex = /\$\d{1,3}(\.\d{1,2})?/;
// or
var regex = /\$\d+(\.\d{1,2})?/;
替换:
this.text = this.text.replace(regex, "$"+replacement); // because replacement does not contain "$" sign
this.value = this.value.replace(regex, "$"+replacement);
// for replace all entries of $123 or $123.4 or $123.45
// (maximum three digits before dot (if exist)
// and maximum two digits after dot (if exist)
var regex = /\$\d{1,3}(\.\d{1,2})?/g;
// same as above but no maximum digits before dot
var regex = /\$\d+(\.\d{1,2})?/g;
// or without /g to replace only first occurence
var regex = /\$\d{1,3}(\.\d{1,2})?/;
// or
var regex = /\$\d+(\.\d{1,2})?/;
this.text = this.text.replace(regex, "$"+replacement); // because replacement does not contain "$" sign
this.value = this.value.replace(regex, "$"+replacement);