我有一個textfield
,我想在這上面輸入的格式文本: AA #### 1234 我知道這應該shouldChangeCharactersInRange
委託方法來實現textfield
.nut我無法理解每個角色的狀態將如何實施。請給予您的建議。提前感謝!的TextField.text進入應該有特定的格式
回答
,可以有助於驗證您的需求的表達可能是:
^[a-z]{2}\s\d{4}\s\d{4}$
這裏:
^
- 顯示字符串[a-z]{2}
的開始 - 顯示A-Z之間的任何字符恰好2倍\s
- 顯示空白字符一次。\d{4}
- 顯示0-9的任何數字,正好4次。$
- 顯示字符串
末作爲一種解決方法的一個例子可能是這樣,這裏的棘手的部分是讓施工串下:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSError *error = NULL;
NSRegularExpression *regex = nil;
NSMutableString *combinedText = [textField.text mutableCopy];
[combinedText replaceCharactersInRange:range withString:string];
switch (combinedText.length) {
case 1:
case 2:
regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"^[a-z]{%ld}", (long)combinedText.length] options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 3:
regex = [NSRegularExpression regularExpressionWithPattern:@"^[a-z]{2}\\s" options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 4:
case 5:
case 6:
case 7:
regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"^[a-z]{2}\\s\\d{%ld}", (long)combinedText.length - 3] options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 8:
regex = [NSRegularExpression regularExpressionWithPattern:@"^[a-z]{2}\\s\\d{4}\\s" options:NSRegularExpressionCaseInsensitive error:&error];
break;
case 9:
case 10:
case 11:
case 12:
regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"^[a-z]{2}\\s\\d{4}\\s\\d{%ld}$", (long)combinedText.length - 8] options:NSRegularExpressionCaseInsensitive error:&error];
break;
default:
return false;
}
if(error) return false;
NSUInteger numberOfMatches = [regex numberOfMatchesInString:combinedText options:0 range:NSMakeRange(0, combinedText.length)];
return numberOfMatches > 0 || string.length == 0;
}
希望幫助!
@Prez,我剛剛檢查了您的問題內容已更改。無論如何,很高興看到你做到了。 – NeverHopeless
謝謝先生......我已經完成了全部工作,但無法理解爲什麼它會在退格時崩潰。請給我提供一些指導嗎? – Prez
我的當前解決方案支持'||的幫助退格處理string.length == 0'和'range:NSMakeRange(0,combinedText.length)'。你的代碼中是否也有這個? – NeverHopeless
在UITextField上創建類別並根據您的要求添加此方法寫入條件。下面的例子電子郵件ID:
- (BOOL)validateRegEx:(NSString*)regexString
{
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString
options:NSRegularExpressionCaseInsensitive
error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:self.text
options:0
range:NSMakeRange(0, [self.text length])];
return numberOfMatches > 0;
}
你能幫助我在這裏需要實現的正則表達式嗎? – Prez
- 1. 我應該用什麼來轉換特定的json格式
- 2. 我應該如何刪除特定格式的鏈接?
- 3. 對特定格式的laravel進行TIme格式驗證
- 4. 格式當列有特定的名稱,
- 5. 特定格式
- 6. 特定格式的NSDate
- 7. MVC 4只有授權用戶應該輸入特定頁面
- 8. 麻煩特定格式寫入文件
- 9. 獲取輸入特定格式在c
- 10. 獲取的TextField.text值
- 11. 如何對Meteor中的輸入單元格表格進行反應式綁定?
- 12. Iphone TextField.text
- 13. 格式特定值
- 14. 在特定格式
- 15. 在特定格式
- 16. 將特定輸入數字格式化爲其他格式
- 17. 需要特定的十進制格式 - 只能使用格式字符串?
- 18. VB.NET如何將十進制格式應用於Gridview中的特定列?
- 19. datetime.parse並使其具有特定格式
- 20. 格式化的東西進入文件寫入有效
- 21. 如何搜索JTextPane以進行特定的格式化?
- 22. 格式化日期到特定格式
- 23. C#DateTimeOffset格式化爲特定格式
- 24. 在java的特定格式的Android
- 25. 時間特定格式的Android的Java
- 26. 有特殊格式進行排序,以數字的數據表
- 27. 創建具有特定格式的自定義數據類型
- 28. 在特定的格式和響應於Android的
- 29. 有什麼不應該進入HTTP標頭的指南嗎?
- 30. 驗證錯誤的格式應該是json,格式如下
顯示您的嘗試代碼 –