我需要從NSString中刪除/替換除字母數字以外的所有字符, - ,&。我如何構建我的正則表達式來實現該目標 我想確保用戶不會輸入字母數字,&以外的任何字符和 - 在uitextfield中。我怎樣才能做到這一點。以前我處理的東西在shoulchangecharactersineange,但現在過濾器越來越大,以處理通過條件。正則表達式可能是我的場景的最佳選擇。我會認識你的想法和輸入ios的正則表達式
回答
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)r replacementString:(NSString*)s
{
NSCharacterSet * reject = [[NSCharacterSet characterSetWithCharactersInString:@"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890-&"] invertedSet];
if ([s rangeOfCharacterFromSet:reject].length)
{
return NO;
}
return YES;
}
你可以使用NSString
方法rangeOfCharctersFromSet:
來做這個檢查。
首先構造一個包含允許字符的字符集,然後使用invertedSet
獲取一組所有不允許的字符。然後在你的字符串中搜索這個集合中的字符範圍。如果在該組中的字符被發現的回覆範圍值將是{NSNotFound, 0}
NSMutableCharacterSet *legalCharacters = [NSCharacterSet alphanumericCharacterSet];
[legalCharacters addCharactersInString:@"-&"];
NSCharacterSet *illegalCharacters = [legalCharacters invertedSet];
NSString *testString = @"[email protected]#$%";
if ([testString rangeOfCharacterFromSet:illegalCharacters].location == NSNotFound) {
// string passed validation
} else {
// string failed validation
}
'[NSCharacterSet alphanumericCharacterSet]'返回* Unicode *「字母」和「數字」(例如包括所有漢字)的集合。這可能不是預期的。 – 2012-07-21 03:30:56
這取決於原始問題的作者是如何限制的,但我個人討厭沒有正當理由拒絕常見重音字符的應用程序。例如,如果這是捕獲專有名稱,它不應該強迫某人更改他們的名字,因爲該應用程序存在於7位世界中!我個人會認爲jonkroll的字符集(但在'shouldChangeCharactersInRange'中使用它),除非有一些應用程序需求排除它。 – Rob 2012-07-21 04:08:30
@RobertRyan你絕對正確:) – 2012-07-21 05:39:50
- 1. 正則表達式與iOS
- 2. 正則表達式(正則表達式)
- 3. 正則表達式(正則表達式)
- 4. 正則表達式(正則表達式)
- 5. 正則表達式正則表達式返回的值正則表達式
- 6. iOS中的正則表達式問題
- 7. 在iOS中的正則表達式
- 8. iOS上的正則表達式錯誤
- 9. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 10. 正則表達式正則表達式模仿正則表達式
- 11. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 12. iOS Phonegap正則表達式替換
- 13. iOS正則表達式理解
- 14. Python的正則表達式:「喜歡」正則表達式模式?
- 15. 形式的Java正則表達式PHP正則表達式
- 16. 正則表達式表達
- 17. 正則表達式表達
- 18. 正則表達式表達
- 19. 正則表達式的所有合法正則表達式的
- 20. 正則表達式的正則表達式的Java字符串
- 21. 正則表達式的URL的正則表達式
- 22. 的.htaccess重寫正則表達式的正則表達式
- 23. PHP的正則表達式的JavaScript正則表達式
- 24. PHP的preg_match和正則表達式的正則表達式
- 25. 複雜的正則表達式的正則表達式
- 26. 對面的正則表達式的正則表達式
- 27. 正則表達式的正則表達式的挑戰
- 28. 表達式的正則表達式
- 29. 正則表達式的C#正則表達式
- 30. 正則表達式中的正則表達式?
也許你能告訴我們你的'shouldChangeCharactersInRange',但TC的回答顯示了它是如何的簡單。無論您使用7位字符集,還是將其擴展爲支持常見的歐洲語言(例如jonkroll),都取決於您。但無論如何,這應該非常簡單。 – Rob 2012-07-21 04:05:04