我想驗證一個字符串對下面的正則表達式:正則表達式與iOS
[(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{6,20}]
驗證通過,如果使用
numberOfMatches
方法如下進行:NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@「[(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{6,20}]」 options:0 error:&error]; NSUInteger numberOfMatches = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, string.length)]; BOOL status numberOfMatches == string.length;
如果使用
NSPredicate
進行驗證,則驗證失敗:NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", [(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{6,20}]]; BOOL status = [test evaluateWithObject:string];
這是什麼原因?我想用NSPredicate
來做到這一點。
我不是一位ObjC專家,但這看起來不像我熟悉的任何語言的有效正則表達式。你打算如何匹配?具體來說,圍繞整個事物的方括號可能不應該在那裏。 – Amadan 2014-11-25 07:02:20
你想驗證一個字符串是否是字母數字?你想在哪裏使用這個正則表達式? – 2014-11-25 07:05:41
兩次嘗試都不正確。正則表達式應該是'^(?=。* [A-Z])(?=。* [0-9])(?=。* [a-z])。{6,20} $'。在第一種情況下,'numberOfMatches'應該對照1.在第二種情況下,你必須提供'@「'^(?=。* [AZ])(?=。* [0-9])(? =。* [az])。{6,20} $'「'作爲參數。 – nhahtdh 2014-11-25 07:10:20