婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 正則表達式在IOS中的應用及IOS中三種正則表達式的使用與比較

正則表達式在IOS中的應用及IOS中三種正則表達式的使用與比較

熱門標簽:400免費電話去哪申請 地圖標注字母的軟件 菏澤智能ai電銷機器人銷售公司 css百度地圖標注位置顯示 地圖標注商戶中心要收錢多少 宿遷智能外呼系統供應商 實用地圖標注app 線上教育ai外呼系統 鄂州人工智能電銷機器人軟件

正則表達式在ios中應用

一、什么是正則表達式

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

二、正則表達式的語法

  看一個過濾純數字的例子

- (BOOL)validateNumber:(NSString *) textString


{ NSString* number=@"^[0-9]+$";
 NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
 return [numberPre evaluateWithObject:textString];
}

其中下述語句就是一個正則表達式

@"^[0-9]+$"

  它代表了字符串中只能包含>=1個0-9的數字,語法是不是有一些怪異?

  下面我們先撇開iOS中的正則表達式的語法,用通俗的正則表達式語法來為介紹一下。(iOS語法與通俗的正則表達式語法相同,不同在于對轉義字符的處理上(語言類的都相同))

  語法:

  首先,特殊符號'^'和'$'。他們的作用是分別指出一個字符串的開始和結束。eg:

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

  類似于:- (BOOL)hasPrefix:(NSString *)aString;

  “a dog$”:表示所以以”a dog”結尾的字符串(”it is a dog”,·····);

  類似于:- (BOOL)hasSuffix:(NSString *)aString;

  “^apple$”:表示開始和結尾都是”apple”的字符串,這個是唯一的~;

  “banana”:表示任何包含”banana”的字符串。

  類似于 iOS8的新方法- (BOOL)containsString:(NSString *)aString,搜索子串用的。

  ‘*','+'和'?'這三個符號,表示一個或N個字符重復出現的次數。它們分別表示“沒有或更多”([0,+∞]取整),“一次或更多”([1,+∞]取整),“沒有或一次”([0,1]取整)。下面是幾個例子:

  “ab*”:表示一個字符串有一個a后面跟著零個或若干個b(”a”, “ab”, “abbb”,……);

  “ab+”:表示一個字符串有一個a后面跟著至少一個b或者更多( ”ab”, “abbb”,……);

  “ab?”:表示一個字符串有一個a后面跟著零個或者一個b( ”a”, “ab”);

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

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

  “ab{4}”:表示一個字符串有一個a跟著4個b(”abbbb”);

  “ab{1,}”:表示一個字符串有一個a跟著至少1個b(”ab”,”abb”,”abbb”,……);

  “ab{3,4}”:表示一個字符串有一個a跟著3到4個b(”abbb”,”abbbb”)。

  那么,“*”可以用{0,}表示,“+”可以用{1,}表示,“?”可以用{0,1}表示

  注意:可以沒有下限,但是不能沒有上限!例如“ab{,5}”是錯誤的寫法

  “ | ”表示“或”操作:

  “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”后面跟著一個任意字符和一個小寫字母;

  “^.{5}$”:表示任意1個長度為5的字符串;

  “\num” 其中num是一個正整數。表示”\num”之前的字符出現相同的個數,例如

  “(.)\1″:表示兩個連續的相同字符。

  “10\{1,2\}” : 表示數字1后面跟著1或者2個0 (“10″,”100″)。

  ” 0\{3,\} ” 表示數字為至少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\+$”

 三、iOS中正則表達式

  1.正則表達式與NSPredicate連用,eg:

- (BOOL)validateNumber:(NSString *) textString
{
 NSString* number=@"^[0-9]+$";
 NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
 return [numberPre evaluateWithObject:textString];
}

  2.NSString方法

  - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;

NSString *searchText = @"rangeOfString";
NSRange range = [searchText rangeOfString:@"^[0-9]+$" options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
 NSLog(@"range :%@", [searchText substringWithRange:range]);
}

  3.正則表達式類(NSRegularExpression)

NSString *searchText = @"you want to match"; 
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]+$" options:NSRegularExpressionCaseInsensitive error:error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
 NSLog(@"%@", [searchText substringWithRange:result.range]);
}

四、常用的正則表達式

  以下紅色字符串是常用的正則表達式(以下正則表達式來自百度百科)

  1.驗證用戶名和密碼:”^[a-zA-Z]\w{5,15}$”

  2.驗證電話號碼:(”^(\\d{3,4}-)\\d{7,8}$”)

  eg:021-68686868  0511-6868686;

  3.驗證手機號碼:”^1[3|4|5|7|8][0-9]\\d{8}$”;

  4.驗證身份證號(15位或18位數字):”\\d{14}[[0-9],0-9xX]”;

  5.驗證Email地址:(“^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*$”);

  6.只能輸入由數字和26個英文字母組成的字符串:(“^[A-Za-z0-9]+$”) ;

  7.整數或者小數:^[0-9]+([.]{0,1}[0-9]+){0,1}$

  8.只能輸入數字:”^[0-9]*$”。

  9.只能輸入n位的數字:”^\\d{n}$”。

  10.只能輸入至少n位的數字:”^\\d{n,}$”。

  11.只能輸入m~n位的數字:”^\\d{m,n}$”。

  12.只能輸入零和非零開頭的數字:”^(0|[1-9][0-9]*)$”。

  13.只能輸入有兩位小數的正實數:”^[0-9]+(.[0-9]{2})?$”。

  14.只能輸入有1~3位小數的正實數:”^[0-9]+(\.[0-9]{1,3})?$”。

  15.只能輸入非零的正整數:”^\+?[1-9][0-9]*$”。

  16.只能輸入非零的負整數:”^\-[1-9][]0-9″*$。

  17.只能輸入長度為3的字符:”^.{3}$”。

  18.只能輸入由26個英文字母組成的字符串:”^[A-Za-z]+$”。

  19.只能輸入由26個大寫英文字母組成的字符串:”^[A-Z]+$”。

  20.只能輸入由26個小寫英文字母組成的字符串:”^[a-z]+$”。

  21.驗證是否含有^%',;=?$\”等字符:”[^%',;=?$\x22]+”。

  22.只能輸入漢字:”^[\u4e00-\u9fa5]{0,}$”。

  23.驗證URL:”^http://([\\w-]+\.)+[\\w-]+(/[\\w-./?%=]*)?$”。

  24.驗證一年的12個月:”^(0?[1-9]|1[0-2])$”正確格式為:”01″~”09″和”10″~”12″。

  25.驗證一個月的31天:”^((0?[1-9])|((1|2)[0-9])|30|31)$”正確格式為;”01″~”09″、”10″~”29″和“30”~“31”。

  26.獲取日期正則表達式:\\d{4}[年|\-|\.]\\d{\1-\12}[月|\-|\.]\\d{\1-\31}日?

  評注:可用來匹配大多數年月日信息。

  27.匹配雙字節字符(包括漢字在內):[^\x00-\xff]

  評注:可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

  28.匹配空白行的正則表達式:\n\s*\r

  評注:可以用來刪除空白行

  29.匹配HTML標記的正則表達式:(\S*?)[^>]*>.*?/>|.*? />

  評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復雜的嵌套標記依舊無能為力

  30.匹配首尾空白字符的正則表達式:^\s*|\s*$

  評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式

  31.匹配網址URL的正則表達式:[a-zA-z]+://[^\s]*

  評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

  32.匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  評注:表單驗證時很實用

  33.匹配騰訊QQ號:[1-9][0-9]\{4,\}

  評注:騰訊QQ號從10 000 開始

  34.匹配中國郵政編碼:[1-9]\\d{5}(?!\d)

  評注:中國郵政編碼為6位數字

  35.匹配ip地址:((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)。

iOS中3種正則表達式的使用與比較

之前我在博文中介紹過iOS中自帶正則表達式的使用( 傳送門),后來我發現其實iOS中有三種方式來實現正則表達式的匹配。現在將他們都記錄在這里:

1.利用NSPredicate(謂詞)匹配

例如匹配有效郵箱:

NSString *email = @“nijino_saki@163.com”; 
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
BOOL isValid = [predicate evaluateWithObject:email];

謂詞匹配比較靈活,但是需要有謂詞的相關知識。

2.利用rangeOfString:option:直接查找

NSString *searchText = @"http:// Do any additional setup after loading the view, typically from a nib."; 
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch]; 
if (range.location != NSNotFound) { 
 NSLog(@"%@", [searchText substringWithRange:range]); 
}

options中設定NSRegularExpressionSearch就是表示利用正則表達式匹配,會返回第一個匹配結果的位置。

3.使用正則表達式類

NSString *searchText = @"http:// 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) {
 NSLog(@"%@\n", [searchText substringWithRange:result.range]);
}

使用系統的正則表達式類(NSRegularExpression)會返回匹配的多個結果。

以上內容就是本文的全部內容,希望大家喜歡。

您可能感興趣的文章:
  • iOS App開發中Objective-C使用正則表達式進行匹配的方法
  • iOS 正則表達式判斷手機號碼、固話
  • iOS 正則表達式判斷純數字及匹配11位手機號碼的方法
  • IOS開發常用的正則表達式
  • iOS 中使用正則表達式判斷身份證格式及銀行卡號格式是否正確(推薦)
  • iOS中使用正則表達式NSRegularExpression 來驗證textfiled輸入的內容
  • iOS正則表達式驗證手機號、郵箱、身份證號等
  • ios利用正則表達式判斷手機號碼格式是否正確的實例
  • Objective-C中利用正則去除非數字字母漢字方法實例

標簽:鞍山 池州 六安 綿陽 梅州 三亞 咸陽 恩施

巨人網絡通訊聲明:本文標題《正則表達式在IOS中的應用及IOS中三種正則表達式的使用與比較》,本文關鍵詞  正則,表達式,在,IOS,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正則表達式在IOS中的應用及IOS中三種正則表達式的使用與比較》相關的同類信息!
  • 本頁收集關于正則表達式在IOS中的應用及IOS中三種正則表達式的使用與比較的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲成人1区2区| 色婷婷国产精品久久包臀 | 亚洲精品ww久久久久久p站| 色婷婷久久综合| 老司机精品视频一区二区三区| 国产香蕉久久精品综合网| 色偷偷88欧美精品久久久| 911精品国产一区二区在线| 中文字幕精品—区二区四季| 久久精品久久综合| 亚洲欧美日韩在线| **网站欧美大片在线观看| 69久久99精品久久久久婷婷| 蜜臀va亚洲va欧美va天堂| 欧美日韩一区二区三区在线看| 高清成人免费视频| 国产精品三级在线观看| 国产精品综合在线视频| 中文字幕第一区综合| 午夜精品视频在线观看| 一级日本不卡的影视| 亚洲嫩草精品久久| 中文字幕一区二区在线观看| 欧美日韩不卡在线| 欧美美女喷水视频| 欧美一区中文字幕| 国产福利一区在线观看| 成人黄色在线看| 99精品视频在线观看| 欧美精品一级二级三级| 欧美一区二区三区公司| 欧美日韩视频在线一区二区 | 在线免费不卡电影| 一区二区三区四区在线免费观看| 亚洲麻豆国产自偷在线| 日韩国产一二三区| 亚洲欧洲精品天堂一级| 亚洲一区二区高清| 国产一区在线观看视频| 色综合久久久久久久久久久| 91亚洲精华国产精华精华液| 欧美日韩三级一区二区| 国产精品久久久久久久久快鸭 | 亚洲精品乱码久久久久久| 51午夜精品国产| 国产精品自在欧美一区| 久久久www成人免费无遮挡大片| 国产精品超碰97尤物18| 另类调教123区| 欧美群妇大交群中文字幕| 综合中文字幕亚洲| 粉嫩一区二区三区性色av| 精品国产免费人成在线观看| 日韩久久免费av| 亚洲精选免费视频| 久久国产精品区| 三级不卡在线观看| 欧美三级中文字幕在线观看| 91麻豆精品国产91久久久久久| 综合av第一页| 99天天综合性| 亚洲乱码国产乱码精品精可以看| 亚洲丝袜自拍清纯另类| 亚洲一区二区av在线| 日本高清不卡aⅴ免费网站| 欧美一级在线观看| 欧美韩日一区二区三区四区| 成人一道本在线| 亚洲永久精品大片| 91精品午夜视频| 国产精品羞羞答答xxdd| 一区二区三区视频在线看| 欧美人xxxx| 国产精品夜夜嗨| 亚洲国产aⅴ天堂久久| 日韩视频永久免费| 亚洲丝袜另类动漫二区| 六月丁香综合在线视频| 波多野结衣亚洲| 91精品国产综合久久国产大片| 极品销魂美女一区二区三区| 国产精品久久综合| 另类小说综合欧美亚洲| 欧美午夜寂寞影院| 午夜精品久久久久久久久久久| 国产欧美日韩在线视频| 久久国产婷婷国产香蕉| 亚洲精品乱码久久久久久日本蜜臀| 欧美老女人第四色| 全国精品久久少妇| 亚洲一区在线看| |精品福利一区二区三区| 国产91精品久久久久久久网曝门| 亚洲线精品一区二区三区| 91久久线看在观草草青青| 丁香啪啪综合成人亚洲小说 | 久久婷婷综合激情| 韩国女主播一区二区三区| 久久色视频免费观看| 久久一区二区三区国产精品| 国产欧美在线观看一区| 91麻豆自制传媒国产之光| 成人久久视频在线观看| 亚洲在线视频网站| 欧美精品一区二区三区蜜桃视频| 九色综合国产一区二区三区| 精品一区二区在线视频| 午夜精品久久久久久不卡8050| 粉嫩av亚洲一区二区图片| 色哟哟日韩精品| 国产不卡在线播放| 91久久精品一区二区二区| 国内欧美视频一区二区| 依依成人综合视频| 国产成人亚洲精品青草天美| 免费人成精品欧美精品| 91在线精品秘密一区二区| 日韩欧美精品在线| 怡红院av一区二区三区| 国产剧情在线观看一区二区| 欧美亚洲国产一区二区三区| 国产日本欧洲亚洲| 久久精品999| 午夜私人影院久久久久| 欧美xxxxx裸体时装秀| 亚洲欧美日韩一区二区 | 国产日韩欧美一区二区三区乱码| 另类小说视频一区二区| 欧美综合在线视频| 《视频一区视频二区| 国产91在线|亚洲| 日韩欧美成人一区| 国产精品久久一卡二卡| 亚洲成人av一区| 国产精品拍天天在线| 国产成人在线视频网址| 亚洲国产精品传媒在线观看| 激情小说欧美图片| 久久综合九色综合97_久久久| 国产性天天综合网| 亚洲婷婷综合色高清在线| 丁香亚洲综合激情啪啪综合| 99久久久久久| 亚洲国产一区在线观看| 毛片av一区二区| 国产精品美女视频| 在线免费观看一区| 青青草国产精品亚洲专区无| 日韩小视频在线观看专区| 国产高清久久久久| 亚洲精品免费一二三区| 日韩黄色小视频| 久久99精品国产91久久来源| 欧美一级欧美三级在线观看| 久久影院电视剧免费观看| 日韩美女视频在线| 国产麻豆视频一区| 日本韩国欧美三级| 五月天久久比比资源色| 欧美国产成人精品| 免费不卡在线视频| 综合网在线视频| 欧美一区二区福利视频| 国产成人精品午夜视频免费| 亚洲欧美视频一区| 精品奇米国产一区二区三区| 99综合影院在线| 国产精品12区| 日本va欧美va瓶| 亚洲色图在线看| 成人午夜又粗又硬又大| 日韩欧美一区二区视频| 91丨porny丨蝌蚪视频| 久久99在线观看| 美日韩黄色大片| 久久久久国产成人精品亚洲午夜| 久久国产免费看| 五月天久久比比资源色| 亚洲成人午夜影院| 亚洲伊人伊色伊影伊综合网| 国产精品国产精品国产专区不蜜| 欧美日韩久久一区| 欧美日韩第一区日日骚| 欧美性猛片xxxx免费看久爱| 97久久精品人人做人人爽50路| 高清国产一区二区三区| 日本电影欧美片| 麻豆91在线观看| 国产精品一区二区在线播放| 国产精品一区二区黑丝| av不卡一区二区三区| 亚洲综合免费观看高清完整版在线| 中文字幕二三区不卡| 欧美在线高清视频| 日韩三级视频在线观看| 懂色av一区二区三区蜜臀| 国模少妇一区二区三区| 不卡在线视频中文字幕| 肉丝袜脚交视频一区二区| 天堂va蜜桃一区二区三区 |