想要學(xué)會并且使用正則表達(dá)式首先就要能夠讀懂它的語法肆氓,下面廢話少說讓我們看看正則表達(dá)式的基本語法去枷。
首先竭望,特殊符號'^'和'$'邪码。他們的作用是分別指出一個字符串的開始和結(jié)束。eg:
“^one”:表示所有以”one”開始的字符串(”one cat”咬清,”one123″闭专,·····)奴潘;
類似于:- (BOOL)hasPrefix:(NSString *)aString;
“a dog$”:表示所以以”a dog”結(jié)尾的字符串(”it is a dog”,·····)影钉;
類似于:- (BOOL)hasSuffix:(NSString *)aString;
“^apple$”:表示開始和結(jié)尾都是”apple”的字符串画髓,這個是唯一的~;
“banana”:表示任何包含”banana”的字符串平委。
類似于 iOS8的新方法- (BOOL)containsString:(NSString *)aString,搜索子串用的奈虾。
‘*','+'和'?'這三個符號廉赔,表示一個或N個字符重復(fù)出現(xiàn)的次數(shù)肉微。它們分別表示“沒有或更多”([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”,……)。
可以用大括號括起來({})攒至,表示一個重復(fù)的具體范圍厚者。例如
“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”惊奇;
方括號”[ ]“表示在括號內(nèi)的眾多字符中互躬,選擇1-N個括號內(nèi)的符合語法的字符作為結(jié)果,例如
“[ab]“:表示一個字符串有一個”a”或”b”(相當(dāng)于”a|b”)颂郎;
“[a-d]“:表示一個字符串包含小寫的'a'到'd'中的一個(相當(dāng)于”a|b|c|d”或者”[abcd]“)吼渡;
“^[a-zA-Z]“:表示一個以字母開頭的字符串;
“[0-9]a”:表示a前有一位的數(shù)字乓序;
“[a-zA-Z0-9]$”:表示一個字符串以一個字母或數(shù)字結(jié)束寺酪。
“.”匹配除“\r\n”之外的任何單個字符:
“a.[a-z]“:表示一個字符串有一個”a”后面跟著一個任意字符和一個小寫字母舟奠;
“^.{5}$”:表示任意1個長度為5的字符串;
“\num” 其中num是一個正整數(shù)房维。表示”\num”之前的字符出現(xiàn)相同的個數(shù)沼瘫,例如
“(.)\1″:表示兩個連續(xù)的相同字符。
“10\{1,2\}” : 表示數(shù)字1后面跟著1或者2個0 (“10″,”100″)。
“ 0\{3,\} ” 表示數(shù)字為至少3個連續(xù)的0 (“000”,“0000”纺腊,······)没宾。
在方括號里用'^'表示不希望出現(xiàn)的字符,'^'應(yīng)在方括號里的第一位。
[“@[^a-zA-Z]4]@”表示兩個”@”中不應(yīng)該出現(xiàn)字母)。
常用的還有:
“ \d ”匹配一個數(shù)字字符。等價于[0-9]皂股。
“ \D”匹配一個非數(shù)字字符。等價于[^0-9]命黔。
“ \w ”匹配包括下劃線的任何單詞字符呜呐。等價于“[A-Za-z0-9_]”。
“ \W ”匹配任何非單詞字符悍募。等價于“[^A-Za-z0-9_]”蘑辑。
iOS中書寫正則表達(dá)式,碰到轉(zhuǎn)義字符坠宴,多加一個“\”,例如:
全數(shù)字字符:@”^\\d\+$”