iOS 詳細的正規表示式

2021-09-07 07:27:50 字數 4502 閱讀 4599

1、簡介:

在專案中,正則的使用是很普遍的,例如登入賬號和密碼(手機號、郵箱等)。用到的方法就是謂詞物件過濾:nspredicate。

2、什麼是正規表示式:

正規表示式,又稱正規表示法,是對字串操作的一種邏輯公式。正規表示式可以檢測給定的字串是否符合我們定義的邏輯,也可以從字串中獲取我們想要的特定部分。它可以迅速地用極簡單的方式達到字串的複雜控制。

3、語法:

首先,特殊符號'

^'和'$'

。他們的作用是分別指出乙個字串的開始和結束。eg:

「^one」:表示所有以」one」開始的字串(」one cat」,」one123″,·····);

類似於:- (bool)hasprefix:(nsstring *)astring;

「a dog$」:表示所以以」a dog」結尾的字串(」it

isa dog」,·····);

類似於:- (bool)hassuffix:(nsstring *)astring;

「banana」:表示任何包含」banana」的字串。

類似於 ios8的新方法- (bool)containsstring:(nsstring *)astring,搜尋子串用的。

『*',

'+'和

'?'這三個符號,表示乙個或n個字元重複出現的次數。它們分別表示「沒有或更多」([0,+∞]取整),「一次或更多」([1,+∞]取整),「沒有或一次」([0,1]取整)。下面是幾個例子:

「ab*」:表示乙個字串有乙個a後面跟著零個或若干個b(」a」, 「ab」, 「abbb」,……);

「ab?」:表示乙個字串有乙個a後面跟著零個或者乙個b( 」a」, 「ab」);

「a?b+$」:表示在字串的末尾有零個或乙個a跟著乙個或幾個b( 」b」, 「ab」,」bb」,」abb」,……)。

可以用大括號括起來({}),表示乙個重複的具體範圍。例如

「ab」:表示乙個字串有乙個a跟著4個b(」abbbb」);

「ab」:表示乙個字串有乙個a跟著至少1個b(」ab」,」abb」,」abbb」,……);

「ab」:表示乙個字串有乙個a跟著3到4個b(」abbb」,」abbbb」)。

那麼,「*」可以用表示,「+」可以用表示,「?」可以用表示

注意:可以沒有下限,但是不能沒有上限!例如「ab」是錯誤的寫法

「 |」表示「或」操作:

「a|b」:表示乙個字串裡有」a」或者」b」;

「(a|bcd)ef」:表示」aef」或」bcdef」;

「(a|b)*c」:表示一串」a」"

b」混合的字串後面跟乙個」c」;

方括號」[ ]「表示在括號內的眾多字元中,選擇1-n個括號內的符合語法的字元作為結果,例如

「[ab]「:表示乙個字串有乙個」a」或」b」(相當於」a|b」);

「[a-d]「:表示乙個字串包含小寫的'

a'到'

d'中的乙個(相當於」a|b|c|d」或者」[abcd]「);

「^[a-za-z]「:表示乙個以字母開頭的字串;

「[0-9

]a」:表示a前有一位的數字;

「[a-za-z0-9

]$」:表示乙個字串以乙個字母或數字結束。

「.」匹配除「\r\n」之外的任何單個字元:

「a.[a-z]「:表示乙個字串有乙個」a」後面跟著乙個任意字元和乙個小寫字母;

「^.$」:表示任意1個長度為5的字串;

「\num」 其中num是乙個正整數。表示」\num」之前的字元出現相同的個數,例如

「(.)\

1″:表示兩個連續的相同字元。

「10\」 : 表示數字1後面跟著1或者2個0 (「10″,」100

″)。」

0\ 」 表示數字為至少3個連續的0 (「000」,「0000

」,······)。

在方括號裡用'^

'表示不希望出現的字元,'^'

應在方括號裡的第一位。

「@[^a-za-z]4

@」表示兩個」@」中不應該出現字母)。

常用的還有:

「 \d 」匹配乙個數字字元。等價於[

0-9]。

「 \d」匹配乙個非數字字元。等價於[^0-9

]。「 \w 」匹配包括下劃線的任何單詞字元。等價於「[a-za-z0-9_]」。

「 \w 」匹配任何非單詞字元。等價於「[^a-za-z0-9_]」。

ios中書寫正規表示式,碰到轉義字元,多加乙個「\」,例如:

全數字字元:@」^\\d\+$」

4、常用的正規表示式如下:(郵箱,**號碼,身份證,密碼,暱稱)

//

郵箱+ (bool) validateemail:(nsstring *)email";

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];

returnb;}

//密碼

+ (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 %@

",regex2];

return

[identitycardpredicate evaluatewithobject:identitycard];

}

github: 

支援cocoapods:  pod 'xyqregexpattern', '~> 2.0.0'

iOS 正規表示式

正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替換那些符合某個模式的文字。系統自帶的,...

ios 正規表示式

ab7 必須找到連在一起的ab7 0 9 找到0 9中的乙個即可 0 9 找到0 9中的乙個即可 0123456789 找到0 9中的乙個即可 d表示數字,d表示3個數字連在一起 d d d表示3個數字連在一起 da表示3個數字2個a連在一起 d 2個或4個數字連在一起 表示開始 表示結束 d 開始...

iOS 正規表示式

1.前言 正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元以及這些特定字元的組合,組成乙個規則字串,這個規則字串用來表達對字串的一種過濾邏輯。常見的用處就是匹配字串的合法性,擷取特定的字串等等。2.常見語法 語法說明 表示式例項 完整匹配的字串 一般字元 匹配自身 kity ki...