NSString が 0 ~ 9 と af の文字のみを含む有効な 16 進数形式であるかどうかを検証するための iPhone 用の簡単な正規表現を探していました。GUID についても同様です。または、GUID が有効かどうかを確認する機能が既に組み込まれていますか?
GUID の作成に関する投稿がいくつか見つかりました。このSOの回答は、私が使用している形式でGUIDを作成しています。
サンプル GUID
ADD2B9F7-A699-4EF3-9A70-130B92154B11
1 つの方法は、次を使用することNSCharacterSet
です。
NSString *testCharacters = @"ABCDEFabcdef0123456789-";
NSCharacterSet *testCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:testCharacters] invertedSet];
NSString *testString1 = @"ADD2B9F7-A699-4EF3-9A70-130B92154B11";
NSRange range1 = [testString1 rangeOfCharacterFromSet:testCharacterSet];
NSLog(@"testString1: %@", (range1.location == NSNotFound) ? @"Good" : @"Bad");
NSString *testString2 = @"zDD2B9F7-A699-4EF3-9A70-130B92154B11";
NSRange range2 = [testString2 rangeOfCharacterFromSet:testCharacterSet];
NSLog(@"testString2: %@", (range2.location == NSNotFound) ? @"Good" : @"Bad");
NSLog 出力:
testString1: Good
testString2: Bad
または RE を使用する:
NSString *reString = @"[a-fA-F0-9-]+";
NSString *testString1 = @"ADD2B9F7-A699-4EF3-9A70-130B92154B11";
NSRange range1 = [testString1 rangeOfString:reString options:NSRegularExpressionSearch];
NSLog(@"testString1: %@", (range1.location != NSNotFound && range1.length == testString1.length) ? @"Good" : @"Bad");
NSString *testString2 = @"zDD2B9F7-A699-4EF3-9A70-130B92154B11";
NSRange range2 = [testString2 rangeOfString:reString options:NSRegularExpressionSearch];
NSLog(@"testString2: %@", (range1.location != NSNotFound && range2.length == testString2.length) ? @"Good" : @"Bad");
より厳密な GUID 一致の場合:
NSString *reString = @"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}";