十进制数的正则表达式和空白的Swift

时间:2016-08-15 05:44:38

标签: regex swift

我希望快速匹配所有十进制数和整数的正则表达式,要求如下:

Reject these non-numbers:
. (single decimal point)
2.2.2 (two or more decimal points in any order)
-. (negative decimal point)
+. (plus decimal point)
(empty string)

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

为什么不尝试将String转换为Float,而不是正则表达式。您可以将以下内容放在Swift游乐场中,看它是否有效:

using std::string_literals::operator""s;

答案 1 :(得分:0)

如果验证用户输入而非正则表达式,为什么不尝试将String转换为数字用户NSNumberFormatter。这使您无法编写正则表达式并处理国际格式(例如在德国,他们将2.3作为2,3输入):

let numberFormatter: NSNumberFormatter = {
    let formatter = NSNumberFormatter()
    formatter.numberStyle = .DecimalStyle
    return formatter
}()

func isNumber(s: String) -> Bool {
    return numberFormatter.numberFromString(s) != nil
}