Swift 版本 ?
使用textfield輸入時(shí)只允許輸入數(shù)字和小數(shù)點(diǎn)
方案:只需要在 textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 此代理方法中執(zhí)行以下代碼
let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let expression = "^[0-9]*((\\.|,)[0-9]{0,2})?$"
let regex = try! NSRegularExpression(pattern: expression, options: NSRegularExpression.Options.allowCommentsAndWhitespace)
let numberOfMatches = regex.numberOfMatches(in: newString, options:NSRegularExpression.MatchingOptions.reportProgress, range: NSMakeRange(0, (newString as NSString).length))
return numberOfMatches != 0
解釋:主要是第二句正則表達(dá)式的使用:
1层坠、{0,2}這里是控制小數(shù)點(diǎn)后面位數(shù)的,0表示最少0位,2表示最多兩位,可以根據(jù)自己需求變化
2锨苏、這個(gè)正則表達(dá)式第一位允許輸入小數(shù)點(diǎn)"."
3、[0-9]*,針對(duì)上一點(diǎn)们童,你可以改寫為[0-9]+侯养,這里第一位就不會(huì)出現(xiàn)小數(shù)點(diǎn)
4敦跌、如果你的需要可以輸入負(fù)數(shù)的話,將正則表達(dá)式改為 "^-{0,1}[0-9]*((\\.|,)[0-9]{0,2})?$"