簡體   English   中英

iPhone:UITextField中的正則表達式和文本輸入驗證失敗

[英]iPhone: regular expression and text input validation in UITextField is failing

我有以下代碼,它們應該將輸入輸入到UITextField並驗證它。 它似乎沒有工作,我有點困惑為什么。

有人可以給我一些建議嗎?

NSString *const regularExpression = @"([0-9a-zA-Z\\s]{1,6})";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regularExpression options:NSRegularExpressionCaseInsensitive error:&error];

           if (error) 
              {
               NSLog(@"error %@", error);
              }

NSUInteger numberOfMatches = 
[regex numberOfMatchesInString:s                                   options:0                                                 range:NSMakeRange(0, [s length])];
NSLog(@"index = %d", i);
NSLog(@"Value of TextField = %@", s);
NSLog(@"Regular expression is = %@", regularExpression);
if (numberOfMatches <= 0)
  {
   NSLog(@"Failed regex test ");
  }

該字符串應該不能通過正則表達式測試:“Einxnkxkd Xnckck”

但它過去了。

我不確定如何以及為什么......我在這里找不到任何明顯的東西? 謝謝

該方法numberOfMatchesInString:在字符串匹配搜索。 它不會針對整個字符串測試您的模式。

它正在傳遞,因為模式([0-9a-zA-Z\\\\s]{1,6})至少匹配測試字符串Einxnkxkd Xnckck的前六個字母,產生Einxnk 事實上,我可以找到很多比賽: EEininx等。

如果要確保整個字符串與模式匹配,請使用^表示字符串的開頭,並使用$標記結束,以便您的模式變為^([0-9a-zA-Z\\\\s]{1,6})$

如果要將表達式限制為字符串,則需要將表達式包裝在^ .. $中:

NSString *const regularExpression = @"^([0-9a-zA-Z\\s]{1,6})$";

編輯 :使用RegEx Air應用程序進行測試,它非常方便(或任何其他reg exp測試儀)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM