ios-Regex的使用__Regex

來源:互聯網
上載者:User

一般來說我們在ios中使用Regex一共有這幾個步驟1、建立一個Regex對象來定義規則 2、利用Regex對象來測試相應的字串。

我們之前匹配字串可能是這麼匹配的,通過for迴圈取出字串,然後再進行一一匹配

 NSString * str = @"nsjkan1234980";        BOOL flag = YES;    for(int i=0;i<str.length;i++)    {        unichar c = [str characterAtIndex:i];        if(!(c>='0'&&c<='9'))        {            flag=NO;            break;        }    }    if(flag)    {        NSLog(@"字串全是數字");    }    else    {        NSLog(@"字串包含了非數字");    }

在Xcode中我們可以這樣使用NSRegularExpression * regex = [[NSRegularExpression alloc]initWithPattern:pattern options:0 error:nil];其中的

options表示的是NSRegularExpressionOptions,這是個枚舉,有以下這麼幾個值         NSRegularExpressionCaseInsensitive             = 1 << 0, //不區分字母大小寫模式
        NSRegularExpressionAllowCommentsAndWhitespace  = 1 << 1, //忽略掉Regex中的空格和#號之後的字元
        NSRegularExpressionIgnoreMetacharacters        = 1 << 2, //將Regex整體作為字串處理
        NSRegularExpressionDotMatchesLineSeparators    = 1 << 3, //允許.匹配任何字元,包括分行符號
        NSRegularExpressionAnchorsMatchLines           = 1 << 4, //允許^和$符號匹配行的開頭和結尾
        NSRegularExpressionUseUnixLineSeparators       = 1 << 5, //設定\n為唯一的行分隔字元,否則所有的都有效。
        NSRegularExpressionUseUnicodeWordBoundaries    = 1 << 6 //使用Unicode TR#29標準作為詞的邊界,否則所有傳統Regex的詞邊界都有效

比如說我們可以這麼做,下面是去匹配str字串中的數位個數,其中的pattern就是一個規則,[0-9]就是去尋找有沒有數字,當然前面的那個寫法和[0123456789]這種寫法是一樣的,因為[ ]代表的就是去尋找這個括弧裡面的字元

        NSString * str = @"AAABBB";        NSString * pattern = @"[0-9]";        NSRegularExpression * regex = [[NSRegularExpression alloc]initWithPattern:pattern options:0 error:nil];                NSArray * results = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)];                NSLog(@"%d",results.count);

如果是普通的字串比如說,下面是AB就是去匹配這個字串中有沒有AB字元。

NSString * pattern = @"AB";

下面這個是去找字串中所有小寫字母的個數

NSString * pattern = @"[a-z]";
如果想去找小寫字母和大寫字母都可以有的話,就用下面的。

NSString * pattern = @"[a-zA-Z]";NSString * pattern = @"[a-z|A-Z]";
如果想去找兩個連在一起的數位話,可以用下面的方法

NSString * pattern = @"[0-9][0-9]";
當然我們還可以這麼寫,數字可以用\d來代替的,當然這裡因為\是逸出字元,所以我們還需要再加一個\進行轉換為普通的\

NSString * pattern = @"\\d\\d";
當然想找兩個數字組成的字串,我們還可以這麼做

NSString * pattern = @"\\d{2}";
如果是下面這個就是去找兩個數字後面還帶有兩個A的子串

NSString * pattern = @"\\d{2}A{2}";
這個是表示數字個數是2-4個的,這裡需要注意的是,如果我們字串是7789,匹配出來的是1個不是2個,因為它是能匹配多少就匹配多少個的。

NSString * pattern = @"\\d{2-4}";
下面這個是匹配字串中包含數位個數為0個或者一個,下面這個匹配把空串也包含進去了

NSString * pattern = @"\\d?";
下面這個帶+號的就表示匹配至少包含一個數位字串,這裡有兩個,一個是11212,一個是123

NSString * str = @"a11212abc123";NSString * pattern = @"\\d+";
下面這個表示的是以數字開頭的字串

NSString * pattern = @"^\\d";
下面這個是是否以兩個數字開頭

NSString * pattern = @"^\\d{2}";
下面這個是有任意個1的字串,*表示任意個

NSString * pattern = @"1*";
下面這個判斷是否以數字開頭,是否以數字結尾 . 表示的是任意的字元分行符號除外 ^表示的是以什麼開頭,$表示的是以什麼結尾

NSString * pattern = @"^\\.*\\d$";

判斷是否是純數字,並且開頭不是0,數字是6-11位

NSString * str = @"1121212312123";NSString * pattern = @"^[1-9]\\{5,11}$";
“+”可以用{1,}表示,“?”可以用{0,1}表示,其實也就是說如果是n+表示的就是要至少包含一個n字元,如果是*就表示包含0個或多個的字元n,如果是n?

就表示的是匹配包含0個或者1個n的字串。| 表示的就是或的意思。 Regex可以去判斷字串是否符合某個特定的規則

可以去截取字串中符合某個特定規則的內容,在這裡補充下()的作用就是分組的意思,()內的內容表示的是一個字串,()本身不匹配任何東西,也不限制匹配任何東西,只是把括弧內的內容作為同一個運算式來處理,例如(ab){1,3},就表示ab一起連續出現最少1次,最多3次。如果沒有括弧的話,ab{1,3},就表示a,之後緊跟的b出現最少1次,最多3次。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.