之前我在博文中介紹過ios中自帶正規表示式的使用(傳送門),後來我發現其實ios中有三種方式來實現正規表示式的匹配。現在將他們都記錄在這裡:
1.利用nspredicate(謂詞)匹配
nsstring *email = @「[email protected]」;
nsstring
*regex = @"[a-z0-9a-z._%+-]+@[a-za-z0-9.-]+\\.[a-za-z]";
nspredicate *predicate = [nspredicate
predicatewithformat:@"self matches %@", regex];
bool
isvalid = [predicate
evaluatewithobject
:email];
謂詞匹配比較靈活,但是需要有謂詞的相關知識。
2.利用rangeofstring:option:直接查詢
nsstring *searchtext = @"// do any additional setup after loading the view, typically from a nib.";
nsrange range = [searchtext rangeofstring:@"(?:[^,])*\\." options:nsregularexpressionsearch];
if (range.location != nsnotfound)
options中設定nsregularexpressionsearch就是表示利用正規表示式匹配,會返回第乙個匹配結果的位置。
3.使用正規表示式類
nsstring *searchtext = @"// do any additional setup after loading the view, typically from a nib.";
nserror *error = null;
nsregularexpression *regex = [nsregularexpression regularexpressionwithpattern:@"(?:[^,])*\\." options:nsregularexpressioncaseinsensitive error:&error];
nstextcheckingresult *result = [regex firstmatchinstring:searchtext options:0 range:nsmakerange(0, [searchtext length])];
if (result)
使用系統的正規表示式類(nsregularexpression)會返回匹配的多個結果。
小結:第一種匹配需要學習nspredicate的寫法,需要查閱蘋果相關技術文件;如果只關心第乙個匹配的結果,第二種匹配較為簡潔;如果需要匹配多個結果,同時匹配多次,第三種方式效率會更高。
iOS 的正規表示式使用
判斷文字是否含有 emoji 部分第三方 emoji 不能識別 bool iscontainsemoji nsstring string else if substring.length 1 else else if 0x2b05 hs hs 0x2b07 else if 0x2934 hs hs ...
正規表示式簡介(微軟) 3 使用正規表示式
使用正規表示式 在典型的搜尋和替換操作中,必須提供要查詢的確切文字。這種技術對於靜態文字中的簡單搜尋和替換任務可能足夠了,但是由於它缺乏靈活性,因此在搜尋動態文字時就有困難了,甚至是不可能的。使用正規表示式,就可以 1.測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個 號...
iOS 正規表示式
正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替換那些符合某個模式的文字。系統自帶的,...