iOS中的謂詞NSPredicate

NSPredicate的坑,正則表達式不管是否添加「^ 或 $」,系統會自動添加開始字符和結束字符,和咱們日常使用的不太同樣,因此要寫出完整的匹配表達式。正則表達式

NSString *regex = @"^[\u4e00-\u9fa5A-Za-z].*$";lua

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];spa

BOOL isValid = [predicate evaluateWithObject:self.cardpname];code

 

1、基本用法

①比較運算符

= , == : 判斷兩個表達式是否相等orm

>= , => : 判斷左邊表達式的值是否大於或等於右邊表達式的值對象

<= , =< : 判斷左邊表達式的值是否小於或等於右邊表達式的值blog

> : 判斷左邊表達式的值是否大於右邊表達式的值字符串

< : 判斷左邊表達式的值是否小於右邊表達式的值it

!= , <> : 判斷左邊表達式的值是否右邊表達式的值不相等模板

NSNumber *test = @(555);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF > 55"];
if ([predicate evaluateWithObject:test]) {
    NSLog(@"test:%@", test);
}

②邏輯運算符

AND、&&:邏輯與,要求兩個表達式的值都爲YES時,結果才爲YES。

OR、||:邏輯或,要求其中一個表達式爲YES時,結果就是YES

NOT、!:邏輯非,對原有的表達式取反

③字符串的運算符

BEGINSWITH:檢查字符串是否以指定的字符串開頭(如判斷字符串是否以a開頭:BEGINSWITH 'a')

 ENDSWITH:檢查字符串是否以指定的字符串結尾(如判斷字符串是否以a結尾:ENDSWITH 'a')

 CONTAINS:檢查字符串是否包含指定的字符串(如判斷字符串是否包含a:CONTAINS 'a')

 LIKE:檢查某個字符串是否匹配指定的字符串模板。

     其以後能夠跟?表明一個字符和*表明任意多個字符兩個通配符。

     好比"name LIKE '*ac*'",這表示name的值中包含ac則返回YES;

     "name LIKE '?a'",表示name的第2個字符爲a時返回YES。

 MATCHES:檢查某個字符串是否匹配指定的正則表達式。雖然正則表達式的執行效率是最低的,但其功能是最強大的,也是咱們最經常使用的。

④集合運算符

BETWEEN :必須知足表達式 BETWEEN {下限, 上限}的格式,要求該表達式必須大於或等於下限,並小於或等於上限。

 IN :必須知足表達式 IN {元素0, 元素1, 元素2...}的格式,要求該表達式必須包含有{}中的任一元素。

 ANY , SOME : 集合中任意一個元素知足條件,就返回YES

 ALL : 集合全部元素知足條件,才返回YES

 NONE : 集合中沒有任何元素元素知足條件,就返回YES

⑤直接量

FALSE、NO:表明邏輯假

TRUE、YES:表明邏輯真

 NULL、NIL:表明空值

 SELF:表明正在被判斷的對象自身

相關文章
相關標籤/搜索