javascript - 需要匹配字符串或从字符串中删除不需要的字符

标签 javascript jquery regex

我有以下变量,它是选择框的选定文本。这是选择框标记。

<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] : "";

Live example

意思是“寻找 $ 后跟一系列数字和 . 字符,并在匹配时尽可能多地获取该系列。”生成的匹配数组将具有完整 匹配字符串(包括位置 0 的 $,然后是位置 1 的第一个(也是唯一的)捕获组——所以我们抓取那个。


更新 嗯,如果您需要捕获 - 符号(我猜您需要),请将其更改为:

  var m = test_var.match(/(-?)\$([0-9\.]+)/);
  var result = m.length > 0 ? m[1] + m[2] : "";

Live example

如果它出现在 $ 之前,则对 - 使用可选的捕获,然后组合两个捕获组 (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/

相关文章:

javascript - Chrome 设备模式下 Google map 标记图标周围的空白区域

javascript - 使用 eq() 淡入/淡出列表项

javascript - 使用 lambda 从 DynamoDb 读取单列数据

javascript - 如何在重新加载数据表时传递参数

javascript - 当我尝试缩小屏幕时,背景 <div> 在其后留出空间

javascript - 如何使用正则表达式将南非手机号码上的 +27 替换为零 (0)?

javascript - 使用 JavaScript/JQuery,当相关元素从下方经过时,使导航链接突出显示?

javascript - jQuery 检查电子邮件地址是否是数组元素中字符串的一部分

php - 使用 PHP(XPath)、PHP/Python(Regex) 或 Python(XPath) 从 html 中提取信息

css - 正则表达式搜索替换 CSS