我试图在UITextField中获得用户的体重。价值可以是这样的东西
9
9.56
50
50.75
目前我已经尝试了这个并且没有工作。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let Regex = "([0-9]){0,2}\\.([0-9]){0,2}"
let TestResult = NSPredicate.init(format:"SELF MATCHES %@",Regex)
return TestResult.evaluate(with: textField.text! + string)
}
它总是返回false。
123456.123456应该是假的
<12> 12.12应该是真的答案 0 :(得分:1)
如果您只想匹配以下格式,请使用此选项:
.1
.12
1
1.
1.1
1.12
12
12.
12.1
12.12
^(?:\d{1,2}(?:\.\d{0,2})?|\.\d{1,2})$
不匹配空字符串。
解释
^ # BOS
(?: # --------------
\d{1,2} # one or two digits
(?: \. \d{0,2} )? # optional '.' and 0 to 2 digits
| # or,
\. \d{1,2} # '.' and 1 or 2 digits
) # --------------
$ # EOS
注意 - 始终使用锚点,因为它使它成为一个独立的便携式解决方案!!
另外,作为参考,(?:\d+(?:\.\d*)?|\.\d+)
是语言解析数字(无装饰)的核心标准。
答案 1 :(得分:0)
你可以使用这个:_
<强>解释强>
^\d{1,2}(?:[.,]\d{1,2})?$
从行首开始,
^
匹配1对2次之间的任意位数
\d{1,2}
((?:[.,]\d{1,2})?
是非捕获组)
?:
直到行尾
答案 2 :(得分:0)
试试这个
[0-9] {2,2}?([。] [0-9] {2,2}?)?