Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript和正则表达式更新选择框的文本?_Javascript_Jquery_Regex - Fatal编程技术网

如何使用javascript和正则表达式更新选择框的文本?

如何使用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

我有一个标有“活动价值”的选择框,里面有美元价值。它们看起来像这样($1,$2,$3,…)。我有另一个选择框,当它被更改时,需要从“campaign_value”中获取更新的值。下面是我到目前为止所拥有的

HTML

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