ios的正则表达式



我需要删除/替换除字母数字、-、&来自NSString。我如何构造正则表达式来实现这一点我想确保用户不会输入字母数字以外的任何字符,&和-在uitextfield。我怎么能那样做。以前我在shoulchangcharactersinange中处理事情,但现在过滤器越来越大,无法处理if条件。正则表达式可能是我的场景的最佳选择。我很欣赏你的想法和输入

-(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 = @"ThisStringWillFail@#$%";
if ([testString rangeOfCharacterFromSet:illegalCharacters].location == NSNotFound) {
    // string passed validation
} else {
    // string failed validation
}

最新更新