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. ansible-playbook 主机变量2

    ansible-playbook 配置 hosts 后可以指定变量,通过-k 可以交互输入密码,也可以将密码写在 hosts 文件中. 入口 yaml 文件中通过 {{ ** }} 获取变量,命令行通 ...

  2. QDesktopWidget

    在Qt中提供了QDesktopWidget类,提供屏幕的有关信息. 可以这么作: QDesktopWidget *d=QApplication::desktop(); int width=d-> ...

  3. (字符串处理)Fang Fang -- hdu -- 5455 (2015 ACM/ICPC Asia Regional Shenyang Online)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5455 Fang Fang Time Limit: 1500/1000 MS (Java/Others)  ...

  4. (连通图 Tarjan)Caocao's Bridges --HDU --4738

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:曹操有很多岛屿,然后呢需要建造一些桥梁将所有的岛屿链接起来,周瑜要做的是就是不让曹操将所 ...

  5. Java性能调优:利用JFR生成性能日志

    Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻. 好的分析工具能起到事半功倍的效果,利用分析利器JMC.JFR,可以实现性能问题的准确定位. 本文主要阐述如何利用JFR生成 ...

  6. Flord算法传递闭包

    POJ3660 对于flord算法得学习,这篇博客写的非常好http://blog.csdn.net/ljhandlwt/article/details/52096932 这个题问你给你n头牛得前后关 ...

  7. jquery ui widgets-datepicker

    jquery ui的用法就不在此讲述,直接进入jquery ui的窗体小部件(widgets)——datepicker. 相信很多像我这样子的菜鸟少年,如果同一个页面上有两个input文本输入框是用来 ...

  8. 转 UNIGUI安装教程、使用例子

    转 UNIGUI安装教程.使用例子 http://my.oschina.net/u/582827/blog/203429?p={{currentPage-1}} 转 uniGui安装教程.使用例子 发 ...

  9. vc6.0 PK vs2010

    从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...

  10. Windows Phone 8.1 生命周期调试

    之前重装了机子,今天调试时突然找不到调试生命周期的菜单栏了.最后找了5分钟,终于找回来了,特此记录以免以后重装后再出现这种状况. 项目启动调试后: 这样是没有显示调试生命周期的,接下来在工具栏右键: ...