【问题标题】:How to get float value from string using regex?如何使用正则表达式从字符串中获取浮点值?
【发布时间】:2016-10-30 15:36:48
【问题描述】:

我有一个如下所示的字符串值:

"ZAR 200.15"

使用正则表达式,我如何提取浮点值进行计算?

在某些情况下,我使用 javascript 来访问 HTML 元素的值,如下所示:

var amountDueString = document.getElementById("amountDue").innerHTML;

那么我需要使用正则表达式来只获取浮点值。

var amountDue = amountDueString.match(---some regex---);

我想提取浮点值以便与用户输入进行比较。

【问题讨论】:

  • 匹配/\b\d+(?:\.\d+)?/

标签: javascript html regex match


【解决方案1】:

试试这个:

(\d)+\.(\d+)

在记事本++上测试

【讨论】:

  • 谢谢。将此正则表达式与 parseFloat() 一起使用,我得到了想要的结果。
【解决方案2】:

您可以只匹配带有小数的数字或带有整数和小数部分的数字:

for (var x in arr = ["ZAR 200.15", "300.0", "1.02", "29.001", "10"]) {
  // decimal part only
  console.log(x, arr[x].match(/(\d+)(\.\d+)?/g))
    // integer + decimal part
  console.log(x, arr[x].match(/(\d+\.\d+)/g))
}

【讨论】:

    【解决方案3】:

    使用正则表达式获取数字字符串,然后使用parseFloat将其转换为浮点数

    for (var x in arr = ["ZAR 200.15", "20.0", "21", "22.2", "22.20"]) {
      // decimal part only
      console.log(parseFloat(arr[x].match(/(\d+)(\.\d+)?/g)))
    }

    【讨论】:

      【解决方案4】:

      Working example.

      我认为更好的方法是@anubhava 评论的方法:

      /\b\d+(?:.\d+)?/

      \b : 在单词边界处断言位置(^\w|\w$|\W\w|\w\W)

      \d+ : 匹配一个数字 [0-9], Quantifier + 一次到无限次,尽可能多次,按需回馈[贪婪]。

      Quantifier ? 0 到 1 次,尽可能多次,按需回馈 [贪心]。

      \. 匹配字符 。字面意思

      希望这会有所帮助。

      console.log( "ZAR 200.15".match(/\b\d+(?:.\d+)?/) );

      【讨论】:

        【解决方案5】:

        使用正则表达式查找浮点数,然后替换所有其他单词字符。

        var str = "\"ZAR 200.15\"";
        var patt = /[^(\d+)\.(\d+)]/g;
        var string = str.replace(patt,"");
        window.alert(string);
        

        在这里结帐:here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-13
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2011-03-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多