我們時常有個需求,就是去判斷數字與字母的規則,比如身份證字號是一個大寫字母+九個數字。判斷方法有很多種,這裡有個非常方便的技巧,就是使用正規表達式 (Regular Expression)。
我可以這麼寫⋯⋯
/**
Theme: Regular Expression
IDE: Xcode 7
Language: Objective C
Date: 105/03/05
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
NSString *errorMessage;
// 確認身分證字號格式
NSString *phoneNumber = @“L123456789";
NSString *phoneRegex = @"[A-Z][0-9]{9}";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
BOOL matches = [test evaluateWithObject:phoneNumber];
if (!matches) {
errorMessage = @"身份證字號第一碼英文+後9碼為數字";
}
看了以上的程式片段,就知道如何使用了吧!
那其實正規表達式還有很多種用法,就拿StackOverFlow高人指點的例子⋯⋯
How to validate a phone number (NSString *) in objective-c? Rules:
- minimum 7 digits
- maximum 10 digits
- the first digit must be 2, 3, 5, 6, 8 or 9
實作解答如下:
NSString *phoneNumber = ...;
NSString *phoneRegex = @"[235689][0-9]{6}([0-9]{3})?";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
BOOL matches = [test evaluateWithObject:phoneNumber];
參考:Objective-c regex to check phone number。
。
隨意留個言吧:)~