ios開發
regex
[objc]view plain
copy
ios 中可以通過 nspredicate 來處理正規表示式。相關資料如下:
icu 正規表示式規則:
在 ios 中,我們使用 nspredicate 的字串比較功能來進行正規表示式處理,其比較關鍵字為:matches
下面,列舉乙個匹配6-15個由字母/數字組成的字串的正規表示式,來看看 nspredicate 的具體使用:
[cpp]view plain
copy
print?
nsstring * regex = @
"(^[a-za-z0-9]$)"
; nspredicate * pred = [nspredicate predicatewithformat:@"self matches %@"
, regex];
bool
ismatch = [pred evaluatewithobject:@
"123456abcde"
];
下面是一些常用的正規表示式
//郵箱
+ (bool
)validateemail
:(nsstring
";
nspredicate
*emailtest = [nspredicate
predicatewithformat
:@"self matches %@"
,emailregex
];
return
[emailtest
evaluatewithobject
:email];
} //手機號碼驗證
+ (bool
)validatemobile
:(nsstring
*)mobile
$";
nspredicate
*phonetest = [nspredicate
predicatewithformat
:@"self matches %@"
,phoneregex];
return
[phonetest
evaluatewithobject
:mobile];
} //車牌號驗證
+ (bool
)validatecarno
:(nsstring
*)carno
[a-za-z][a-za-z_0-9][a-za-z_0-9_\u4e00-\u9fa5]$"
; nspredicate
*cartest = [nspredicate
predicatewithformat
:@"self matches %@"
,carregex];
nslog(@"cartest is %@"
,cartest);
return
[cartest
evaluatewithobject
:carno];
} //車型
+ (bool
)validatecartype
:(nsstring
*)cartype
//使用者名稱
+ (bool
)validateusername
:(nsstring
*)name
+$";
nspredicate
*usernamepredicate = [nspredicate
predicatewithformat
:@"self matches %@"
,usernameregex];
bool
b = [usernamepredicate
evaluatewithobject
:name];
return
b;
} //密碼
+ (bool
)validatepassword
:(nsstring
*)password
+$";
nspredicate
*passwordpredicate = [nspredicate
predicatewithformat
:@"self matches %@"
,passwordregex];
return
[passwordpredicate
evaluatewithobject
:password];
} //暱稱
+ (bool
)validatenickname
:(nsstring
*)nickname
$";
nspredicate
*passwordpredicate = [nspredicate
predicatewithformat
:@"self matches %@"
,nicknameregex];
return
[passwordpredicate
evaluatewithobject
:nickname];
} //身份證號
+ (bool
)validateidentitycard
: (nsstring
*)identitycard
nsstring
*regex2=
@"^(\\d|\\d)(\\d|[xx])$"
; nspredicate
*identitycardpredicate = [nspredicate
predicatewithformat
:@"self matches %@"
,regex
2];
return
[identitycardpredicate
evaluatewithobject
:identitycard];
}
其實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 正規表示式與謂詞
一 基本概念1.什麼是正規表示式 正規表示式,又稱正規表示法,是對字串操作的一種邏輯公式。正規表示式可以檢測 給定的字串是否符合我們定義的邏輯,也可以從字串中獲取我們想要的特定部分。它可以 迅速地用極簡單的方式達到字串的複雜控制。2.什麼是謂詞 cocoa框架中的nspredicate用於查詢,原理...
IOS常用正規表示式
原文 匹配中文 u4e00 u9fa5 英文本母 a za z 數字 0 9 匹配中文,英文本母和數字及 u4e00 u9fa5 a za z0 9 同時判斷輸入長度 u4e00 u9fa5 a za z0 9 w u4e00 u9fa5 uf900 ufa2d 1 乙個正規表示式,只含有漢字 數字...
iOS中常用的正規表示式
在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的 很可能你使用過windows dos下用於檔案查詢的萬用字元 wildcard 也就是 和?如果你想查詢某個目錄下的所有的word文件的話,你會搜尋 ...