Regular Expression
這是英文的表達(dá)棍现,其本身是描述或匹配符合某個句法規(guī)則的字符串钢拧。至于為啥翻譯成正則赵讯,表示鬼知道呢巡揍。正確規(guī)則?
一個正則表達(dá)式通常被稱為一個pattern(模式)。
一個正則表達(dá)式通常有如下的結(jié)構(gòu):
選擇
操作符: |
示例:
gray|grey 表示匹配gray或grey
數(shù)量限定
操作符: + ? *
示例:
+表示其前面的字符至少為一個油够。
goo+gle可以匹配 google, google,gooooooole等蚁袭。
?表示其前面的字符至多為1個。
colou?r可以匹配 color和colour石咬。
表示其前面的字符可以是n個揩悄,n非負(fù)數(shù)。
0*42可以匹配 42鬼悠,042删性,0042,00042等
范圍
操作符()
示例:
(grand)?father可以匹配grandfather或father焕窝。
ps:你不會現(xiàn)在就把?操作符的含義給忘記了吧蹬挺。
基本的規(guī)則已經(jīng)介紹了,剩下的語法規(guī)則請google 正則表達(dá)式全集它掂。
篇幅所限巴帮,沒有貼過來,請不要恨我虐秋。
好了終于可以說說在iOS中怎么應(yīng)用正則表達(dá)式了榕茧。
iOS中提供了NSPredicate類來使用正則表達(dá)式。
NSString* regex = @"blahblah";
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
[predicate evaluateWithObject:str];
舉個栗子吧熟妓,我們以新浪郵箱的注冊標(biāo)準(zhǔn)來寫一個正則表達(dá)式雪猪。
NSString* regex = @"^(?!)(?!.*$)\w{4,16}@sina.com";
解釋:
^表示匹配字符串的開始。$表示字符串的結(jié)束位置起愈。
?!表示在任何不匹配字符的地方開始查找字符串只恨。
.表示除\n以外的任意一個字符。表示任意個數(shù)抬虽。(你不會又忘了吧)官觅。
?!.$ 和之前的?!就排除了收尾為下劃線的情況。
\w表示字母數(shù)字和下劃線阐污,等價(jià)于[a-zA-Z0-9_]休涤。
{4,16}表示字符的個數(shù)4-16位。
要吐學(xué)了么笛辟?那繼續(xù)琢磨正則表達(dá)式字符全集吧功氨!