OC 正規表示式

2021-07-09 07:24:50 字數 3202 閱讀 6309

常用的第三方正則庫:

這裡面涉及到的正規表示式語法:

\d 匹配任何乙個數字,即[0-9]

\d+表示1個以上的數字

(\d+) 強行加上小括號,分組,相當把這個值緩衝起來,在**裡用[mystring substringwithrange:[match rangeatindex:1]]可以提取出來回合數

\. 表示小句點

\s 表示分隔符,包括空格、製表符和換行符

\s* 0個或多個分隔符

\w 表示字母、數字和下劃線,這裡還包括unicode字元,不同的語言裡有些不同

\w 表示4個非空白字元

. 表示任何乙個字元,不包括換行符

.* 表示任何多個字元,當然也不包括換行符了

(.|[\r\n])* 表示任何多個字元,包括換行符,貪婪掃瞄

(.|[\r\n])*? 表示任何多個字元,包括換行符,懶惰掃瞄

(?:.|[\\r\\n])   以(?:開頭時的分組資訊,表示不讀取到緩衝器裡,避免rangeatindex呼叫時產生***,後面還會遇到這樣的(?:寫法 

\  一條放在花括號中間的注釋語句,由於包含了換行符,所以支援多行注釋

(\)?  可以沒有注釋,也可以有1條注釋

在ios裡用nsregularexpression類來解析正規表示式,主要用法是: 

nsstring *regtags = @"\\[(\\w*)\\s*\\\"(.*)\\\"]\\s*\\n";       // 設計好的正規表示式,最好先在小工具裡試驗好

nsregularexpression *regex = [nsregularexpressionregularexpressionwithpattern:regtags

options:nsregularexpressioncaseinsensitive    // 還可以加一些選項,例如:不區分大小寫

error:&error];

// 執行匹配的過程

nsarray *matches = [regex matchesinstring:pgntext

options:0

range:nsmakerange(0, [pgntext length])];

// 用下面的辦法來遍歷每一條匹配記錄

for (nstextcheckingresult *match in matches)

nsstring *tagvalue = [pgntext substringwithrange:[match rangeatindex:2]];  // 分組2所對應的串 }

舉幾個常用例子:

//郵箱

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

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 %@",regex2];

return [identitycardpredicate evaluatewithobject:identitycard];

}

oc正規表示式

在電腦科學中,是指乙個用來描述或者匹配一系列符合某個句法規則的字串的單個字串。在很多文字編輯器或其他工具裡,正規表示式通常被用來檢索和 或替換那些符合某個模式的文字內容。許多程式語言都支援利用正規表示式進行字串操作。正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備...

OC正規表示式的使用

oc中一般正規表示式的使用方法為2步 1.建立乙個正規表示式物件 2.利用正規表示式來測試對應的字串 例如nsstring checkstring a34sd231 1.建立正規表示式,0 9 表示 0 到 9 的字元的集合 nsstring pattern 0 9 將正規表示式設定為oc規則 ns...

iOS開發(OC) 正規表示式

1.特殊符號 和 他們的作用是分別指出乙個字串的開始和結束。例如 aa 表示以aa為開頭,s 表示以s結尾。2.字母用 a za z 表示,數字用 0 9 表示,位數用表示。例如 a za z 表示5位的字母,0 9 表示5位的數字,a za z0 9 表示5位的字母或數字。如果要表示多少位以上,則...