1.什么是正则表达式

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

2.正则表达式的字符组成

普通字符【a~z】、特殊字符(称为"元字符")

3.支持

几乎所有的程序设计语言都支持正则表达式,例如:OC,swift,java,c#,python,js等
在很多文本编辑器里,可以使用正则表达式进行检索,Xcode同样支持正则表达式!

4.使用

  • 匹配
    (pattern) 匹配pattern并获取这一匹配,所获取的匹配可以从产生的Matches集合得到
  • 集合
    [xyz] 字符集合(x||y||z)
    [a-z] 字符范围a-z
    [a-zA-Z] 字符范围a-z A-Z
    [^xyz] 负值字符集合 (任何字符, 除了xyz)
    [^a-z] 负值字符范围
    [a-d][m-p] 并集(a到d 或 m到p)
  • 常用元字符
    . 匹配除换行符以外的任意字符
    \w 匹配字母或数字或下划线或汉字 [a-zA-Z_0-9]
    \s 匹配任意的空白符(空格、TAB\t、回车\r \n
    \d 匹配数字 [0-9]
    ^a 匹配字符串的开始a字符
    a$ 匹配字符串的结束a字符
    \bw 匹配单词的开始或结束w字符
  • 常用反义符
    \W 匹配任意不是字母,数字,下划线,汉字的字符[^\w]
    \S 匹配任意不是空白符的字符 [^\s]
    \D 匹配任意非数字的字符[^0-9]
    \Ba 匹配不是单词开头或结束的位置的a字符
    [^a] 匹配除了a以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
  • 常用限定符
    w*oo 重复零次或更多次
    w+oo 重复一次或更多次
    w?oo 重复零次或一次
    w{n} w重复n次
    w{n,} w重复n次或更多次
    w{n,m} w重复n到m次
  • 贪婪和懒惰
    *? 重复任意次,但尽可能少重复
    *+ 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    w{1,2}? 重复1到2次,但尽可能少重复
    ww{1,}? 重复1次以上,但尽可能少重复

5.实例

 // 判断QQ号码(常规判断)

  fileprivate func checkIsQQNumber(str:String) ->Bool {
// 1.判断是否以0开头
if str.hasPrefix(""){
return false
} // 2.判断是否是5~15位
if str.characters.count < || str.characters.count > {
return false
} // 3.判断是否全部都是数字
for c in str.characters{
if c < "" || c > ""{
return false
}
}
return true
}
// 正则判断手机号码 fileprivate func checkPhoneNumber(str:String)->Bool {
let pattern = "1[3578]\\d{9}" let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options(rawValue:))
let res = regex.matches(in: str, options: NSRegularExpression.MatchingOptions(rawValue:), range: NSMakeRange(, str.characters.count))
if res.count > {
return true
}
return false
}

swift 3.0 正则表达式查找/替换字符的更多相关文章

  1. Notepad++正则表达式查找替换文本中文字符

    测试需求 测试工具中xml配置文件中注释字段包含中文字符,在Win10系统下使用工具中偶尔会出现中文乱码导致配置文件失效.解决方法将配置文件中的中文注释换成英文注释或者直接替换删除.如何将配置文件中的 ...

  2. VIM正则表达式查找替换

      0. 一些需要注意的不同 VIM中的正则表达式和其他的有点不一样 (1) 有些符号要用\转义,比如\+表示重复一次或以上,其他的还有一些,:h pattern查看(2) 非贪婪匹配用\{-}, 如 ...

  3. dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法

    查找替换 正则表达式  \btppabs="h[^"]*" 后面不能有空格 你懂得的 选中右下角的 √[使用正则表达式] 替换全部

  4. 在eclipse中利用正则表达式查找替换

    众所周知,eclipse是可以用正则表达式来进行查找的,那么怎么利用正则表达式进行替换呢? 方法也很简单,就是在Replace with: 里面输入$来代表捕获型括号的匹配结果,$1为第一个匹配结果, ...

  5. eclipse使用技巧---使用正则表达式查找替换

    1,Eclipse ctrl+f 打开查找框2,选中 Regular expressions (正则表达式) 去掉/* */(eclipse)        /\*(.|[\r\n])*?\*/去掉/ ...

  6. eclipse使用正则表达式查找替换

    1,Eclipse ctrl+f 打开查找框2,选中 Regular expressions (正则表达式) 去掉/* */(eclipse)        /\*(.|[\r\n])*?\*/去掉/ ...

  7. Notepad++ 使用正则表达式查找替换字符串

        最近在改一些别人写的PHP代码,由于之前的代码可维护性比较差,因此工作量比较多,因此想找一些高效的方式改一些有规律的代码. 比如: 我想将一些类似$rowss[MaxGetCash_num], ...

  8. C#后台利用正则表达式查找匹配字符

    /// <summary>        /// 发送短信 系统固化短信        /// </summary>        /// <param name=&qu ...

  9. 在VS中用正则表达式查找或替换

    2005VS和2008VS正则替换规则如下(2013VS不适合,不需要的同学可以直接跳到2013VS的操作办法): Example: 查找#incldue中带有gl开头的头文件的,用include.+ ...

随机推荐

  1. js正则表达式汇集

    1.只允许中文.字母.数字.中划线.下划线.空格.中文的().英文的()和#,只能以数字.中文.字母.下划线开头,长度为2至40之间 validateTemplateName: function(va ...

  2. ansible-playbook 主机变量1

    hosts 配置后可以支持指定 端口,密码等其他变量 [root@10_1_162_39 host_vars]# ll total -rw-r--r-- root root May : hosts - ...

  3. MySQL-5.7.10主主同步的安装和配置

    目录 目录 1 1. 安装 1 2. 修改MySQL的root密码 4 3. mysqld_safe和mysql.server 4 4. 主主同步配置 4 4.1. 创建同步用户 4 4.2. my. ...

  4. osgearth

    https://max.book118.com/html/2018/0521/167783983.shtm https://baike.1688.com/doc/view-d36134276.html

  5. python正则表达式转义注意事项

    无论哪种语言,在使用正则表达式的时候都避免不了一个问题,就是在匹配元字符的时候,需要对元字符进行转义,让 正则表达式引擎将其当做普通字符来匹配.本文主要以python为例,说明一下转义中需要注意的问题 ...

  6. Hdu1342 Lotto 2017-01-18 17:12 44人阅读 评论(0) 收藏

    Lotto Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

  7. 西邮Linux兴趣小组2014级免试挑战题 (续)

    在上一篇的博客中已经解到第四关了,现在继续挑战-- [ 第四关] 在上一关解压成功后,生成了一个file文件.用vim的二进制格式打开,转成十六进制,发现文件头格式如下: 是个以ELF字符开头的文件, ...

  8. Windows 安装并配置 MySQL 5.6

    Windows 下安装 MySQL 有两种方式,一种是下载安装包,根据提示一路 next 安装,不需要什么配置,比较简单:另一种是下载压缩包,通过命令和配置来安装,也不难,个人感觉更简单.本篇就采用第 ...

  9. 初探Angular_03 组件中模板数据绑定

    这里将介绍三种情况的数据绑定 需要TypeScript的基本知识,如TS数据类型 一.模板属性绑定数据 1.模板属性其实HTML的属性,如class,style,title等 2.先在header.c ...

  10. 使用filter进行登录验证,并解决多次重定向问题

    最近在做关于filter登录验证的功能,防止未登录的用户直接通过地址进入系统 LoginFilter类:继承Filter接口 package com.ss.filter; import java.io ...