c . * ^ $ 是非常有用的匹配器,根据我在日常工作中使用正则表达式的经验,它可以轻松解 决95%的问题 – <代码之美>
正则是字符串处理中绕不开的东西, 尽管 Cocoa 给我们提供了大量的字符串处理方法, 但是在在复杂文本中还是显得太原始, 好在先贤已经帮我们提供了解决方案, 只是需要我们学习下
可能有些小伙伴跟我一样对于正则有过多次 ‘入门’, 看了五分钟就看不下去了, 心想 WTF, 实际上可能是没有具体的问题需要你去解决, 当开发中有个问题需要用正则来解决的时候, 就会静下心学了, 我们不需要精通它, 只需要理解基本规则, 为我所用即可, 不夸张的说, 只需要半天,就可以基本掌握并解决你的问题了
ps 一下代码均为 Ruby 代码, OC 中正则不需要 / 开头和 / 结尾
基本规则
一对一, 即一个字符匹配一个字符, 可以多次匹配
1
/a/ #匹配 aaaaaaa, a
*表示匹配前表达式零次或多次, +表示匹配前表达式至少一次
1
2/abc*/ #匹配 abc, ab, abcab, abcabc
/abc+/ #匹配 abc, abcabc^表示匹配输入字符串开始的位置
1
/^abc/ #匹配 abcxxxx 开头的 abc
$表示匹配输入字符串结束的位置
1
/abc$/ #匹配 xxxxabc 结尾的 abc
.表示匹配除了’\n’所有的单字符
1
/ab.*/ #匹配 abxxxxxxxxxx, ab
练习一下
下面是一个匹配手机号的正则
1
/0?(13|14|15|17|18)[0-9]{9}/
从简单的说起 [0-9] 表示匹配 0-9 中的任一数字, {9} 表示前面的表达式即 [0-9] 要匹配9次
- (13|14|15|17|19) 表示一个组, 组中的选项是 或(|) 的关系
- 0? 表示数字0出现最多一次
- 那么这个表达式的含义是 找一串文字, 可能以 0 开头, 紧跟 13 或 14 或 15 或 17 或 18, 同时以9个数字结尾, 数字必须在 0-9 范围内
- 是不是没有想的那么难
干货分享
不擅长写长文章, 简单给大家介绍到这里了, 有一些学习中积累的好网站分享给大家
正则图形化解析
正则入门
正则在线匹配测试
最后如果有即喜欢 iOS 也喜欢 Ruby 的小伙伴可以留言啊, 大家一起交流