如何使用正则表达式从字符串中获取浮点值?

时间:2016-06-28 10:43:07

标签: javascript html regex match

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

"ZAR 200.15"

使用正则表达式,如何提取浮点值以使用?

进行计算

对于某些上下文,我使用javascript来访问HTML元素的值,如下所示:

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

然后我需要使用正则表达式来获取浮点值。

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

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

5 个答案:

答案 0 :(得分:2)

<强> Working example

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

  

/ \ B \ d +(?:\。d +)?/

import UIKit class ViewController: UIViewController { var scrollView: UIScrollView! var stackView: UIStackView! override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.whiteColor() scrollView = UIScrollView() scrollView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(scrollView) view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView])) view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView])) stackView = UIStackView() stackView.translatesAutoresizingMaskIntoConstraints = false stackView.axis = .Vertical stackView.alignment = .Center scrollView.addSubview(stackView) scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[stackView]|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView])) scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[stackView]|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView])) for _ in 1 ..< 100 { let vw = UIButton(type: UIButtonType.System) vw.setTitle("Button", forState: .Normal) stackView.addArrangedSubview(vw) } } } 在字边界处断言位置(^ \ w | \ w $ | \ W \ w | \ w \ W)。< / p>

\b匹配数字[0-9], \d+ 在一次和无限次之间,尽可能多次,根据需要回馈[贪婪]。

Quantifier + 在零到一次之间,尽可能多次,根据需要回馈[贪婪]。

Quantifier ? 匹配该字符。字面上

希望这有帮助。

&#13;
&#13;
\.
&#13;
&#13;
&#13;

答案 1 :(得分:1)

试试这个:

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

在notepad ++上测试

答案 2 :(得分:1)

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

&#13;
&#13;
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)))
}
&#13;
&#13;
&#13;

答案 3 :(得分:1)

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

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

结账时间:here

答案 4 :(得分:0)

您可以仅将数字与小数匹配,或者将数字与整数和小数部分匹配:

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