我在创建正则表达式方面非常弱。所以我在这里。
我需要一个满足以下条件的正则表达式。
谢谢
答案 0 :(得分:18)
-(BOOL) isPasswordValid:(NSString *)pwd {
if ( [pwd length]<6 || [pwd length]>32 ) return NO; // too long or too short
NSRange rang;
rang = [pwd rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
if ( !rang.length ) return NO; // no letter
rang = [pwd rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]];
if ( !rang.length ) return NO; // no number;
return YES;
}
这显然不是一个正则表达式,但imo正则表达式对此非常有用。
答案 1 :(得分:10)
试试这个:
^(?=.*\d)(?=.*[A-Za-z]).{6,32}$
答案 2 :(得分:2)
不使用任何第三方库,如Regexkit,您可以检查您的要求,如下所示:
if ([[password rangeOfCharacterFromSet: [ NSCharacterSet alphanumericCharacterSet]] &&
[password rangeOfCharacterFromSet: [NSCharacterSet characterSetWithCharactersInString: @"0123456789"]] &&
(6 < [password length]) && [password length] < 32)) {
NSLog(@"acceptable password");
}
答案 3 :(得分:1)
Here你可以找到一个有用的正则表达备忘单,它也提供了一些例子。 其中一个与您的需求非常相似(“样本模式框”中的第6个:)
答案 4 :(得分:1)
以下内容应符合最小/最大字符数,至少1个字母和1个数字字符要求:
^(?=.{6,32}$)(?=.*\d)(?=.*[a-zA-Z]).*$