2012-04-12 4 views
0

私は、正規表現を使用して検証を行っているテキストフィールドを持っています。しかし、ユーザーがテキストフィールドにハイフンを入力してボタンをクリックすると、入力したものが有効ではないというアラートを表示する必要があります。文字列と特殊文字の検証を行っていますが、特殊文字の場合は検証されません。正規表現を使用してテキストフィールドにハイフンを入力しないようにするにはどうすればよいですか?

これは私のコードです:

NSRegularExpression *regex = [[[NSRegularExpression alloc] 
               initWithPattern:@"[a-zA-Z][#$%&*()']" options:0 error:NULL] autorelease]; 

答えて

0

あなたはrangeOfString

NSRange k = [str rangeOfString:@"-"]; 
if(k.length != 0) 
    ... Show your alert message 

を使用してハイフンののoccuranceを確認することができ、私は、これは、正規表現ならば複雑にステップする必要はありませが、あなたの要件を満たしていないだろうと感じ..

0

私はobjective-cに慣れていませんし、正規表現の風味です。私はではありません。 cl耳に何を求めているのですか?あなたの正規表現はではなく、はハイフンに一致します。それは、次の文字の1つに続く文字に一致する必要があります。#$%&*()'。以下は一致している必要があり何のいくつかの例と一致していなければならないいくつかのものです:

SHOULD MATCH    SHOULD NOT MATCH 
---- ----   ---- ------ ------ 
a#  a$    A  --  C3PO 
A)  A*    #  -  huh? 
T%  Q#    g- AA## 123 
j&  a(    $R ()  bbb5 
z'  B&    qq "D%" ()- 

をこれらのいずれかは、あなたが一致したいものと一致しない場合は、所望のパターンを含む質問をする必要があることをマッチしたいいくつかの例は次のようになります。

  • 1と3の首都間の「任意の文字の数、括弧、アスタリスク、アンパサンド」
  • 「ハイフンと角括弧を除く任意の文字の任意の数([])」
  • 」文字の後にオプション番号「
  • ...」を入力してください。

正規表現は、ほぼすべてのパターンのテキストベースのデータを指定できる言語です。パターンにマッチする必要がない場合は、正規表現は必要ありません。がんばろう!

0

あなたが好きではない文字をユーザーが入力したため、警告を表示しないでください。これはひどいUXです。特に、誤植の可能性が高いソフトキーボードを使用している場合は、そうです。

代わりに、入力を処理して、必要な文字を抽出します。電話番号の入力フィールドを持つWebフォームを作成すると考えてください。あなたは、ハイフンや国別コードのプレフィックスなど人間が判読可能な形式の電話番号には興味がありませんが、ユーザーがそれらの文字を入力するのを止めるべきではありません。あなたはあなたが望むものを残して無効な文字を取り除くことができるコードを持っています。

NSStringでも、-stringByTrimmingCharactersInSet:で簡単にできます。例えば、あなたは-stringByTrimmingCharactersInSet:を起動し、指定したNSStringインスタンスから削除したい文字にNSCharacterSetを定義し、あなたがそれにしたい文字のみで自動解放NSStringインスタンスを取得します。:

NSString   *rawInput; // value assigned elsewhere to @"555-555-1212" 
NSCharacterSet *characterSet = [ NSCharacterSet characterSetWithCharactersInString: @"-" ]; 
NSString   *processedInput = nil; 

processedInput = [ rawInput stringByTrimmingCharactersInSet: characterSet ]; 

NSLog(@"processedInput: %@", processedInput); // logs "5555551212" 
関連する問題