浮点、范围和零的正则表达式
Regex for floating points, range and zero
我需要匹配实时输入中的零、整数和浮点数的正则表达式,但也需要小数点分隔符后的长度。
所以当用户点击
时应该没问题
- 0, 0,2, 1,1234
- 如果输入 0 然后 0,然后 0,1 等也应该有效...
- 如果用户点击“。”并且 decimalSeparator 是 "," 验证应该失败。
问题是我的正则表达式不匹配零:
let decimalSeparator = NumberFormatter().decimalSeparator ?? ","
let range = 4
var pattern: String {
return "^(?![0.]+$)[0-9]{0,10}(?:\\(decimalSeparator)[0-9]{0,\(range)})?$"
}
let exp = try NSRegularExpression(pattern: pattern, options: .caseInsensitive).firstMatch(in: string,
options: [],
range: NSRange(location: 0,
length: string.count))```
(?![0.]+$)
否定先行匹配一个位置,该位置未立即跟一个或多个 .
或零直到字符串结尾。
因此,要允许匹配零,您需要摆脱前瞻:
let decimalSeparator = NumberFormatter().decimalSeparator ?? ","
let range = 4
var pattern: String {
return "^[0-9]{0,10}(?:\\(decimalSeparator)[0-9]{0,\(range)})?$"
}
let exp = try NSRegularExpression(pattern: pattern, options: .caseInsensitive).firstMatch(in: string,
options: [],
range: NSRange(location: 0,
length: string.utf16.count))
我需要匹配实时输入中的零、整数和浮点数的正则表达式,但也需要小数点分隔符后的长度。 所以当用户点击
时应该没问题- 0, 0,2, 1,1234
- 如果输入 0 然后 0,然后 0,1 等也应该有效...
- 如果用户点击“。”并且 decimalSeparator 是 "," 验证应该失败。 问题是我的正则表达式不匹配零:
let decimalSeparator = NumberFormatter().decimalSeparator ?? ","
let range = 4
var pattern: String {
return "^(?![0.]+$)[0-9]{0,10}(?:\\(decimalSeparator)[0-9]{0,\(range)})?$"
}
let exp = try NSRegularExpression(pattern: pattern, options: .caseInsensitive).firstMatch(in: string,
options: [],
range: NSRange(location: 0,
length: string.count))```
(?![0.]+$)
否定先行匹配一个位置,该位置未立即跟一个或多个 .
或零直到字符串结尾。
因此,要允许匹配零,您需要摆脱前瞻:
let decimalSeparator = NumberFormatter().decimalSeparator ?? ","
let range = 4
var pattern: String {
return "^[0-9]{0,10}(?:\\(decimalSeparator)[0-9]{0,\(range)})?$"
}
let exp = try NSRegularExpression(pattern: pattern, options: .caseInsensitive).firstMatch(in: string,
options: [],
range: NSRange(location: 0,
length: string.utf16.count))