0

我需要从 NSString 中删除/替换除字母数字、-、& 之外的所有字符。我如何构造我的正则表达式以实现我想确保用户不会在 uitextfield 中输入除字母数字、& 和 - 以外的任何字符。我怎样才能做到这一点。以前我在 shouldchangecharactersineange 中处理了一些事情,但现在过滤器变得越来越大,无法处理 if 条件。正则表达式可能是我的方案的最佳选择。我很欣赏你的想法和意见

4

2 回答 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 回答