私は iPhone アプリケーションに取り組んでおり、入力されたテキストが a から z と数字だけで構成されていることを確認する必要があります。
アクセントやドットが上にあるような他の言語の文字をユーザーに使用させたくありません。
編集:私はこの正規表現に慣れていないので、コードまたはリンクを教えていただければ、本当に感謝しています。
私は iPhone アプリケーションに取り組んでおり、入力されたテキストが a から z と数字だけで構成されていることを確認する必要があります。
アクセントやドットが上にあるような他の言語の文字をユーザーに使用させたくありません。
編集:私はこの正規表現に慣れていないので、コードまたはリンクを教えていただければ、本当に感謝しています。
のような正規表現を使用し[0-9a-zA-Z]+
ます。iPhoneで動作する正規表現ライブラリであるObjectiveC用のRegexKitフレームワークを確認してください。
次に、次のようなことを行うことができます。
NSString *str = @"abc0129yourcontent";
BOOL isMatch = [str isMatchedByRegex:@"^[0-9a-zA-Z]+$"];
もう1つのアプローチ(RegExほどエレガントではないかもしれません):
NSCharacterSet* tSet = [NSCharacterSet characterSetWithCharactersInString:
@"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
NSCharacterSet* invSet = [tSet invertedSet];
NSString* legalS = @"abcdA1";
NSString* illegalS = @"asvéq1";
if ([legalS rangeOfCharacterFromSet:invSet].location != NSNotFound)
NSLog(legalS); // not printed
if ([illegalS rangeOfCharacterFromSet:invSet].location != NSNotFound)
NSLog(illegalS); // printed
最も簡単な方法-句読点も許可したい場合は、すべての文字がASCII値32(スペース)と126(〜)の間にあることを確認することです。ASCIIテーブルはその要点を示しています。
アクセント記号付きの文字はすべて、プログラミングを始めたときに「high」ASCIIと呼んでいたものです。
句読点を許可したくない場合は、いくつかの範囲チェックを行う必要があります。
数字は48から57
大文字の場合は65〜90
小文字の場合は97〜122
これにより、正規表現のアプローチが読みやすくなる可能性があります(これを書いたばかりだとは信じられません)
簡単な実装 (上から取得し、コピーと貼り付けを高速化するためだけに編集):
目的 C:
BOOL onlyEnglishAlphanumerical = ([self.textField.text rangeOfCharacterFromSet:[[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"] invertedSet]].location == NSNotFound);
self.textField.layer.borderWidth = (onlyEnglishAlphanumerical) ? 0 : 1;
if (onlyEnglishAlphanumerical)
{
//Do the deal
}
迅速:
if (self.textField.text.rangeOfCharacterFromSet(NSCharacterSet.init(charactersInString:"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet) == nil)
{
//Do the deal
}