我有一个字符串值,如下所示:
"ZAR 200.15"
使用正则表达式,如何提取浮点值以使用?
进行计算对于某些上下文,我使用javascript来访问HTML元素的值,如下所示:
var amountDueString = document.getElementById("amountDue").innerHTML;
然后我需要使用正则表达式来获取浮点值。
var amountDue = amountDueString.match(---some regex---);
我想提取浮点值,以便将其与用户输入进行比较。
答案 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;
答案 1 :(得分:1)
试试这个:
(\d)+\.(\d+)
在notepad ++上测试
答案 2 :(得分:1)
使用正则表达式获取数字字符串,然后使用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)))
}
&#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))
}