正規表示式

2021-07-10 21:24:38 字數 2858 閱讀 6383

我們平時在對字串構成就行判斷的時候,一般利用其單個字元進行條件判斷

但如果判斷的條件稍微複雜一點,那對單個字元判斷就變得相當麻煩,因此這裡就引入了正規表示式的概念

個人將正規表示式理解是:把多個字串的集合為乙個表示式寫出

oc中一般正規表示式的使用方法為2步

1.建立乙個正規表示式物件

2.利用正規表示式來測試對應的字串

例如

nsstring *checkstring = @"

a34sd231

"; //

1.建立正規表示式,[0-9]:表示『0』到『9』的字元的集合

nsstring *pattern = @"

[0-9]

"; //

1.1將正規表示式設定為oc規則

nsregularexpression *regular = [[nsregularexpression alloc] initwithpattern:pattern options:nsregularexpressioncaseinsensitive error:nil];

//2.利用規則測試字串獲取匹配結果

nsarray *results = [regular matchesinstring:checkstring options:0 range:nsmakerange(0, checkstring.length)];

nslog(@"

%ld",results.count);

獲取列印結果,從checkstring上分析為數字的字元有5

所以可以得出乙個結論,正規表示式的作用就是把多可字串雜糅到乙個表示式中

到這裡就能大概明白正規表示式的意義了,接下來介紹一部分常用的正規表示式字元

/*

:找到內部的某乙個字元

[a-za-z0-9] ===> 代表字元或數字

\\d ====>代表數字

:代表有2個

:代表有2到4個

// ? + * ^ $ .

?: 代表0或1個

+: 代表至少1個

*: 代表0個或多個

^: 代表以...開頭

$: 代表以...結束

.: 代表除換行符以外的任意字元 */

//代表乙個數字字元

nsstring *pattern = @"\\d";

//代表2到5個連續的數字

nsstring *pattern = @"\\d";

//qq賬號的正規表示式

nsstring *pattern = @"^[1-9]\\d";

//**號碼格式的正規表示式

nsstring *pattern = @"^((13[0-9])|(15[3-5])|(18[07-9]))\\d$"

//郵箱的正規表示式

nsstring *pattern =@"^.*@..+\\.[a-za-z]$"

這樣根據需要的匹配規則來設定正規表示式就可以判斷字串是否為符合型別

若有乙個長串字串就要對其中部分進行表情、url、@(呼叫)或#話題# 的匹配判斷

則需要多個正規表示式來進行判斷

//

需要被篩選的字串

nsstring *str = @"

#今日要聞#[偷笑] @sdf[test] #你確定#@rain李23: @張三[挖鼻屎]m123m

"; //

表情正規表示式

//\\u4e00-\\u9fa5 代表unicode字元

nsstring *emopattern = @"

\\[[a-za-z\\u4e00-\\u9fa5]+\\]

"; //

@正規表示式

nsstring *atpattern = @"

@[0-9a-za-z\\u4e00-\\u9fa5]+

"; //

#...#正規表示式

nsstring *toppattern = @"

#[0-9a-za-z\\u4e00-\\u9fa5]+#

"; //

url正規表示式

nsstring *urlpattern = @"

\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))

"; //

設定總的正規表示式

nsstring *pattern = [nsstring stringwithformat:@"

%@|%@|%@|%@

",emopattern,atpattern,toppattern,urlpattern];

//根據正規表示式設定oc規則

nsregularexpression *regular = [[nsregularexpression alloc] initwithpattern:pattern options:nsregularexpressioncaseinsensitive error:nil];

//獲取匹配結果

nsarray *results = [regular matchesinstring:str options:0 range:nsmakerange(0, str.length)];

//nslog(

@"%@",results);

//遍歷結果

for (nstextcheckingresult *result in results)

獲得結果

有了上面的演示就可以大致寫出系統方法使用的正規表示式了

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...