iOS中正则表达式的学习

最近正好有点空余时间,然后就对正则表达式深入研究了一下。
首先,什么是正则表达式呢?

正则表达式,又称郑则表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它可以迅速地用极简单的方式达到字符串的复杂控制。

首先看一个正则表达式的例子在iOS中的应用,匹配账号(英文+数字+6-10位),看下面这段代码

NSString *name = @"a123fds23";
NSString *regex = @"^[A-Za-z0-9]{6,10}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if (![pred evaluateWithObject:name])
{
    NSLog(@"账号错误");
    return YES;
}

OK,其中@"^[A-Za-z0-9]{6,10}$"就是一个正则表达式,看起来是不是很怪异,现在,来分析一下:
1、它代表匹配包含a-z、A-Z、0-9这些字母的6-10位的字符串,如果有其他类似'@'、'#'之类的字符,匹配就出错了,后面{6,10}表示6-10位数字或字母
2、上面字符串中,^,$这两个符号,前面一个代表着开始,后面一个代表结束~举个栗子
* "^Kellen" 代表以Kellen开始的字符串,eg:"Kellen123"、"Kellen s22"
* "Kellen$" 代表以Kellen结束的字符串,eg:"111Kellen"、"2sd Kellen"
* "^Kellen$" 它代表了唯一的一个字符串"Kellen"
* "Kellen" 它代表了只要包含"Kellen"字符串的就行,eg:"Kellen s22"、"2sd Kellen"、"123 Kellen 1s"
* [a]表示1-N个括号内符合的字符作为结果,[a]表示包含一个a的字符串,注意,这里没有加重复,所以只是匹配一个,如果加了{},如[a]{2},则表示匹配两个a eg:2aad
* [ab]表示一个字符串有a或者b
* [a-z]表示可以匹配a-z中的任一字符,同理A-Z、0-9
* a{2} 表示匹配两个a eg:2aad
* ab{2,3} 表示一个字符串中a后面有2个或者3个b
* ab{1,}表示一个字符串中a后面有1-...个b,eg:"ab"、"abb"、"abbb"...
* 特殊:*表示{0,} eg:ab* = ab{0,} a后面有0个或者多个b
* + 表示{1,} eg: ab+ = ab{1,}
* ? 表示{0,1} eg: ab? = ab{0,1} --> a、ab
* 注意,{}中可以没有下限,但不能没有上限,即前面一定要写,后面可有可无,你可以这样理解,zb{,5}不可能会有-2个b吧..._
* "|" 或,a|b 表示一个a或者一个b
* (a|bsd)e 表示asde或者bsde
* "."匹配除了"\r","\n"之外的任一字符 eg:.{2}表示两个随机字符
* "kellen\3" 表示"\3"之前的字符出现的重复次数 "kellennn"
* 如果放在[]中,比如[a-f]表示该字符不能是a-f中的任一
* "\d" = [0,9]
* "\D" = [^0-9]
* 正则表达式中碰到转移字符,应该加一个''

现在来说说正则表达式的常用情形:

  • 验证用户名或者密码 : @"^[a-zA-Z0-9]{6-10}$"
  • 手机号码验证 : @"((13[0-9])|(15[4,\d])|(18[0,0-9]))\d{8}$"
  • 字符串仅能是中文: @"^[u4e00-u9fa5]{0,}$"
  • 由数字、26个英文字母或下划线组成的字符串: @"^w+$
    "
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容