我有以下变量,它是选择框的选定文本。这是选择框标记。
<select name="SELECT___100E___7">
<option selected="" value="25">Beige/Almond</option>
<option value="21">Blue [Subtract -$1.00]</option>
<option value="27">Chrome [Subtract -$2.00]</option>
<option value="29">Red [Add $1.00]</option>
</select>
变量 test_var 保存选定的文本...
$('select[name^="SELECT___"]').change(function(){
var test_var = $(this).find("option:selected").text();
});
所以我想做的是删除除金额以外的所有字符,同时删除“$”。因此,如果选择“Red [Add $1.00]”,我希望 test_var 等于 1.00
无法找出执行此操作的正则表达式。
最佳答案
应该这样做(呃,实际上,请参阅下面的更新):
var m = test_var.match(/(-?)\$([0-9\.]+)/);
var result = m.length > 0 ? m[1] : "";
意思是“寻找 $
后跟一系列数字和 .
字符,并在匹配时尽可能多地获取该系列。”生成的匹配数组将具有完整 匹配字符串(包括位置 0 的 $
,然后是位置 1 的第一个(也是唯一的)捕获组——所以我们抓取那个。
更新 嗯,如果您需要捕获 -
符号(我猜您需要),请将其更改为:
var m = test_var.match(/(-?)\$([0-9\.]+)/);
var result = m.length > 0 ? m[1] + m[2] : "";
如果它出现在 $
之前,则对 -
使用可选的捕获,然后组合两个捕获组 (m[1]
和 m[2]
;如果没有 -
,m[1]
将为 ""。
结果(举例):
Red [Add $1.00] => 1.00 Blue [Subtract -$1.00] => -1.00
题外话:小心本地化!因为在某些地区,那些 .
将是 ,
,例如,在德国,“€1,00”代表一欧元。
关于javascript - 需要匹配字符串或从字符串中删除不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417222/