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. 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)

    1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...

  2. 微信小程序 发送模版消息

    微信小程序开发之发送模板消息 1,小程序wxml页面form表单添加 report-submit="true" <form bindsubmit="sub" ...

  3. 微信第三方平台解密报错:Illegal key size

    今天在交接别人代码的时候遇到的,微信第三方平台解密报的错误,原因: 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size ...

  4. =delete(c++11)

    1.为什么要阻止类对象的拷贝? 1)有些类,不需要拷贝和赋值运算符,如:IO类,以避免多个拷贝对象写入或读取相同的IO缓冲 2.如何阻止? 1)不定义拷贝构造函数和拷贝赋值运算符时,好心的编译器也会及 ...

  5. 三)mybatis 二级缓存,整合ehcache

    mybatis-config.xml <setting name="cacheEnabled" value="true" /> PersonMapp ...

  6. 201709020工作日记--synchronized、ReentrantLock、读写锁

    1.reentrantLock java.util.concurrent.lock 中的Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现.这就为Lock ...

  7. (网络流 模板 Dinic) Drainage Ditches --POJ --1273

    链接: http://poj.org/problem?id=1273 代码: //Dinic #include<stdio.h> #include<string.h> #inc ...

  8. STL---规范

    1. "插入操作" 新插入的数据位于‘哨兵迭代器“所指的节点的前方,并返回指向新插入位置的‘迭代器(指针)“.这是STL对于插入操作的标准规范. 2.链表操作 对于一个链式表,如果 ...

  9. IDEA14添加SVN

    今天升级IDEA14,发现SVN变了,折腾了好一会才搞好.记录一下,希望其他人能少走弯路.主要是IDEA14的svn是用命令行工具进行操作,这样对以后SVN的兼容性也会好很多,这个在他们官方的博客上也 ...

  10. hdu 5012 模拟+bfs

    http://acm.hdu.edu.cn/showproblem.php?pid=5012 模拟出骰子四种反转方式,bfs,最多不会走超过6步 #include <cstdio> #in ...