1. import UIKit
  2.  
  3. /*
  4. 练习1:匹配abc
  5.  
  6. 练习2:包含一个a~z,后面必须是0~9 -->[a-z][0-9]或者[a-z]\d
  7. * [a-z] : a~z
  8. * [0-9]/\d : 0~9:[0-9]/\d :表示[0-9]或\d,\d表示数字的意思
  9.  
  10. 练习3:必须第一个是字母,第二个是数字 -->^[a-z][0-9]$
  11. * ^[a-z] : 表示首字母必须是a~z
  12. * \d{2,10} : 数字有2到10
  13. * [a-z]$ : 表示必须以a-z的字母结尾
  14.  
  15. 练习4:必须第一个是字母,字母后面跟上4~9个数字
  16.  
  17. 练习5:不能是数字0-9
  18.  
  19. * [^0-9] : 不能是0~9
  20.  
  21. 练习6:QQ匹配:^[1-9]\d{4,11}$
  22. 都是数字
  23. 5~12位
  24. 并且第一位不能是0
  25.  
  26. 练习7:手机号码匹配^1[3578]\d{9}$
  27. 1.以13/15/17/18
  28. 2.长度是11
  29. */
  30.  
  31. class ViewController: UIViewController {
  32.  
  33. override func viewDidLoad() {
  34. super.viewDidLoad()
  35.  
  36. let str = ""
  37.  
  38. // 1.创建正则表达式规则
  39. let pattern = "^1[3578]\\d{9}$"// \\d{9},其中\\表示转义, \\d{9}表示,后面有9位数字
  40.  
  41. // 2.创建正则表达式对象(抛出异常throw用:try try? try!)
  42. guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
  43. return
  44. }
  45.  
  46. // 3.匹配字符串中内容:swift中的字符串的长度用:str.characters.count
  47. let results = regex.matches(in: str, options: [], range: NSRange(location: , length: str.characters.count))
  48.  
  49. // 4.遍历数组,获取结果:字符串的截取操作一般都是将swift的字符串转为oc的字符串来处理
  50. for result in results {
  51. print((str as NSString).substring(with: result.range))
  52. print(result.range)
  53. }
  54. }
  55.  
  56. }
  1. import UIKit
  2.  
  3. class ViewController: UIViewController {
  4.  
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7.  
  8. let statusText = "@coderwhy:【动物尖叫合辑】#肥猪流#猫头鹰这么尖叫[偷笑]、@M了个J: 老鼠这么尖叫、兔子这么尖叫[吃惊]、@花满楼: 莫名奇#小笼包#妙的笑到最后[好爱哦]!~ http://t.cn/zYBuKZ8/"
  9.  
  10. /*
  11.  
  12. 1: 匹配出来@coderwhy:let pattern = "@.*?:" ,其中 .* 用来表示表示任意字符,加上 ?来表示,只要遇到:就立即停止匹配,没有?的话,它会一直匹配到最后一个:
  13.  
  14. 2: 匹配表情: let pattern = "\\[.*?\\]" ,因为[],有特殊的含义,所以要进行转义,转义就用\转义,\在siwft字符串中也有特殊含义,所以就再用\来表示,转义就用\,如果转义后,还有特殊含义,就再用\来表示
  15.  
  16. **/
  17.  
  18. // 1.创建匹配规则
  19. // let pattern = "@.*?:" // 匹配出来@coderwhy:
  20. // let pattern = "#.*?#" // 匹配话题
  21. // let pattern = "\\[.*?\\]" // 匹配表情
  22. let pattern = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?" // URL网址
  23.  
  24. // 2.创建正则表达式对象
  25. guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
  26. return
  27. }
  28.  
  29. // 3.开始匹配
  30. let results = regex.matchesInString(statusText, options: [], range: NSRange(location: , length: statusText.characters.count))
  31.  
  32. // 4.获取结果
  33. for result in results {
  34. print((statusText as NSString).substringWithRange(result.range))
  35. }
  36. }
  37. }

swift项目第九天:正则表达式的学习的更多相关文章

  1. 25.怎样创建一个Swift项目?

    经历前面三部分的学习之后,我们对于Swift的有了基本的了解,知道它的基础语法,也知道了类.结构体.枚举.协议.扩展等等内容.但知道上面这些内容,并不代表我们就能很好的进行实际的项目开发了,本部分内容 ...

  2. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  3. 自学 iOS - 三十天三十个 Swift 项目 第一天

    最近公司项目不是很忙,偶然间看到编程语言排行榜,看到swift 已经排到前10了,然OC排名也越来越后了,感觉要上车了,虽然现在项目都是用OC写的,但是swift是一种趋势.在网上看到"自学 ...

  4. 在 Swift 项目中实现侧滑菜单-利用 SWRevealViewController

    你可以完全自己手动写一个侧滑菜单,但是现在在 GitHub 上面已经有很多免费的开源库了,如果不是有很特别的需求,大可不必新建一个轮子. 在这里我使用的这个第三方库名字叫做 SWRevealViewC ...

  5. 在Swift项目中使用cocoaPods导入第三方OC库

    首先保证你的项目是基于cocoaPods的,并且是通过XX.xcworkspace打开的.cocoaPods安装教程(Xcode6以上) 下面就第三方库MBProgressHUD来讲解如何在Swift ...

  6. swift项目中使用OC/C的方法

    假如有个OC类OCViewController : UIViewController类里有两个方法 //swift调用oc或c的混编是比较常用的,反过来的调用很少.这里只写了swift调用oc和c的方 ...

  7. 自学 iOS – 三十天三十个 Swift 项目

    自学 iOS – 三十天三十个 Swift 项目 github源码地址:https://github.com/allenwong/30DaysofSwift

  8. Swift项目兼容Objective-C问题汇总

    Swift项目兼容Objective-C问题汇总 转载自 http://www.cocoachina.com/swift/20150608/12025.html 本文是投稿文章,作者:一叶(博客)欢迎 ...

  9. Swift 项目中常用的第三方框架

    Swift 项目中可能用到的第三方框架 字数1004 阅读4091 评论17 喜欢93 这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! ...

随机推荐

  1. IIS7下设置AD单点登录

    简介:IIS7下设置AD单点登录 1.选中网站,双击“身份验证”: 2.启用“Window身份验证”.禁用“匿名身份验证”.启用“基本身份验证”: 3.在“基本身份验证”上面点右键,选择“编辑”,输入 ...

  2. IBM Tivoli Netview在企业网络管理中的实践(附视频)

    今天我为大家介绍的一款高端网管软件名叫IBM Tivoli NetView,他主要关注是IBM整理解决方案的用户,分为Unix平台和Windwos平台两种,这里视频演示的是基于Windows 2003 ...

  3. DG 参数详解

    1.与角色无关的参数 ◆ DB_UNIQUE_NAME:数据库唯一名.对于物理standby,DB_NAME必须相同,对于逻辑standby,DB_NAME可以不同,所以在10g中引入DB_UNIQU ...

  4. ES6--基础语法(一)

    一.支持环境:node.js完全支持,标准浏览器完全支持.二.测试环境: chrome下需要在script标签的最先开始的地方需要添加"use strict". firefox下需 ...

  5. Linux运维命令总结

    .什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常, 在他运转的过程中,对他进行维护,他集合了网络.系统.数据库.开发.安全.监控于一身 ...

  6. col---过滤控制字符

  7. type---显示指定命令的类型

    type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令. 命令类型: alias:别名. keyword:关键字,Shell保留字. function:函数,Shell函数. bui ...

  8. 史上最简单,js并获取手机型号

    原先获取不了苹果系列的型号,但转换思路,先推断是否是苹果,再用分辨率获取型号 //获取手机型号函数begin function getPhoneType(){  //正则,忽略大写和小写 var pa ...

  9. amazeui的表单开关插件的自定义事件必须添加.bootstrapSwitch 命名空间,给了我们什么启示

    amazeui的表单开关插件的自定义事件必须添加.bootstrapSwitch 命名空间,给了我们什么启示 一.总结 一句话总结:详细看使用文档(说明文档说的真的是非常详细呢,不过循序渐进,不同阶段 ...

  10. 外部事件触发调用对象方法时this指向问题

    问题如下: var obj = { name: 'dang', test:function(){ alert(this.name); } }; obj.test(); //这样是可以的 $('.box ...