我需要从 NSString 中删除/替换除字母数字、-、& 之外的所有字符。我如何构造我的正则表达式以实现我想确保用户不会在 uitextfield 中输入除字母数字、& 和 - 以外的任何字符。我怎样才能做到这一点。以前我在 shouldchangecharactersineange 中处理了一些事情,但现在过滤器变得越来越大,无法处理 if 条件。正则表达式可能是我的方案的最佳选择。我很欣赏你的想法和意见
问问题
777 次
2 回答
1
-(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;
}
于 2012-07-21T03:29:23.610 回答
0
您可以使用该NSString
方法rangeOfCharctersFromSet:
进行此检查。
首先构造一个包含你允许的字符的字符集,然后用来invertedSet
获取所有不允许的字符的集合。然后在您的字符串中搜索此集中的字符范围。如果未找到集合中的任何字符,则返回范围值为{NSNotFound, 0}
NSMutableCharacterSet *legalCharacters = [NSCharacterSet alphanumericCharacterSet];
[legalCharacters addCharactersInString:@"-&"];
NSCharacterSet *illegalCharacters = [legalCharacters invertedSet];
NSString *testString = @"ThisStringWillFail@#$%";
if ([testString rangeOfCharacterFromSet:illegalCharacters].location == NSNotFound) {
// string passed validation
} else {
// string failed validation
}
于 2012-07-21T03:18:21.113 回答