ios中的正则表达式(一个字母和特殊字符)

时间:2016-05-28 12:33:30

标签: ios objective-c regex nsregularexpression

在下面的方法中,我想检查 UITextField Text if:
它包含一个或多个英文单词,以及一个或多个数字,并且可选地包含特殊字符(!@ $&#)
返回true,否则返回false。




  #define pattern @“^ [a-zA-Z0-9 \\ u0021 \\ u0040 \\ u0023 \\ u0024 \\ u0026] {1} * $“

  - (BOOL)stringHasCorrectFormat:(NSString *)str {

 if([str componentsSeparatedByString:SPACE] .count> 1)
返回NO;
 NSString * regularPattern = EMPTY_STRING;
 regularPattern = [regularPattern stringByAppendingString:pattern]
 NSRegularExpression * regex = [NSRegularExpression
 regularExpressionWithPattern:regularPattern
选项:NSRegularExpressionCaseInsensitive
误差:无];



 NSTextCheckingResult * match = [regex
 firstMatchInString:STR
选项:0
 range:NSMakeRange(0,[str length])];


 if(match!= nil){
返回YES;
 }

返回NO;
}
  




谢谢




1 个答案:

答案 0 :(得分:4)

描述

^(?=.*[a-z])(?=.*[0-9])[a-z0-9!@$&#]*$

Regular expression visualization

此正则表达式将执行以下操作:

  • (?=.*[a-z])要求字符串至少包含一个a-z字符
  • (?=.*[0-9])要求字符串至少包含一个0-9字符
  • [a-z0-9!@$&#]*$允许字符串仅由a-z个字符,0-9字符和!@$&#符号
  • 组成

实施例

现场演示

https://regex101.com/r/mC3kL3/1

解释

NODE                     EXPLANATION
----------------------------------------------------------------------
  ^                        the beginning of a "line"
----------------------------------------------------------------------
  (?=                      look ahead to see if there is:
----------------------------------------------------------------------
    .*                       any character except \n (0 or more times
                             (matching the most amount possible))
----------------------------------------------------------------------
    [a-z]                    any character of: 'a' to 'z'
----------------------------------------------------------------------
  )                        end of look-ahead
----------------------------------------------------------------------
  (?=                      look ahead to see if there is:
----------------------------------------------------------------------
    .*                       any character except \n (0 or more times
                             (matching the most amount possible))
----------------------------------------------------------------------
    [0-9]                    any character of: '0' to '9'
----------------------------------------------------------------------
  )                        end of look-ahead
----------------------------------------------------------------------
  [a-z0-9!&#]*             any character of: 'a' to 'z', '0' to '9',
                           '!', '&', '#' (0 or more times (matching
                           the most amount possible))
----------------------------------------------------------------------
  $                        before an optional \n, and the end of a
                           "line"
----------------------------------------------------------------------