2

私は iPhone アプリケーションに取り組んでおり、入力されたテキストが a から z と数字だけで構成されていることを確認する必要があります。

アクセントやドットが上にあるような他の言語の文字をユーザーに使用させたくありません。

編集:私はこの正規表現に慣れていないので、コードまたはリンクを教えていただければ、本当に感謝しています。

4

4 に答える 4

9

のような正規表現を使用し[0-9a-zA-Z]+ます。iPhoneで動作する正規表現ライブラリであるObjectiveC用のRegexKitフレームワークを確認してください。

次に、次のようなことを行うことができます。

NSString *str = @"abc0129yourcontent";
BOOL isMatch = [str isMatchedByRegex:@"^[0-9a-zA-Z]+$"];
于 2010-01-06T13:47:25.177 に答える
3

もう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
于 2010-01-06T14:09:58.797 に答える
2

最も簡単な方法-句読点も許可したい場合は、すべての文字がASCII値32(スペース)と126(〜)の間にあることを確認することです。ASCIIテーブルはその要点を示しています。

アクセント記号付きの文字はすべて、プログラミングを始めたときに「high」ASCIIと呼んでいたものです。

句読点を許可したくない場合は、いくつかの範囲チェックを行う必要があります。

数字は48から57

大文字の場合は65〜90

小文字の場合は97〜122

これにより、正規表現のアプローチが読みやすくなる可能性があります(これを書いたばかりだとは信じられません)

于 2010-01-06T13:46:13.917 に答える
0

簡単な実装 (上から取得し、コピーと貼り付けを高速化するためだけに編集):

目的 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
}
于 2016-07-29T10:15:58.977 に答える