我需要匹配實時輸入中的零、整數和浮點數的正則運算式,但也需要小數點分隔符后的長度。所以當用戶點擊時應該沒問題
- 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))```
uj5u.com熱心網友回復:
負前瞻匹配直到字串末尾(?![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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458784.html
