[英]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
。 事實上,我可以找到很多比賽: E
, Ein
, inx
等。
如果要確保整個字符串與模式匹配,請使用^
表示字符串的開頭,並使用$
標記結束,以便您的模式變為^([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.