我希望快速匹配所有十进制数和整数的正则表达式,要求如下:
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)
任何帮助表示感谢。
答案 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
}