swift 3.0 正则表达式查找/替换字符
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 正则表达式查找/替换字符的更多相关文章
- Notepad++正则表达式查找替换文本中文字符
测试需求 测试工具中xml配置文件中注释字段包含中文字符,在Win10系统下使用工具中偶尔会出现中文乱码导致配置文件失效.解决方法将配置文件中的中文注释换成英文注释或者直接替换删除.如何将配置文件中的 ...
- VIM正则表达式查找替换
0. 一些需要注意的不同 VIM中的正则表达式和其他的有点不一样 (1) 有些符号要用\转义,比如\+表示重复一次或以上,其他的还有一些,:h pattern查看(2) 非贪婪匹配用\{-}, 如 ...
- dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法
查找替换 正则表达式 \btppabs="h[^"]*" 后面不能有空格 你懂得的 选中右下角的 √[使用正则表达式] 替换全部
- 在eclipse中利用正则表达式查找替换
众所周知,eclipse是可以用正则表达式来进行查找的,那么怎么利用正则表达式进行替换呢? 方法也很简单,就是在Replace with: 里面输入$来代表捕获型括号的匹配结果,$1为第一个匹配结果, ...
- eclipse使用技巧---使用正则表达式查找替换
1,Eclipse ctrl+f 打开查找框2,选中 Regular expressions (正则表达式) 去掉/* */(eclipse) /\*(.|[\r\n])*?\*/去掉/ ...
- eclipse使用正则表达式查找替换
1,Eclipse ctrl+f 打开查找框2,选中 Regular expressions (正则表达式) 去掉/* */(eclipse) /\*(.|[\r\n])*?\*/去掉/ ...
- Notepad++ 使用正则表达式查找替换字符串
最近在改一些别人写的PHP代码,由于之前的代码可维护性比较差,因此工作量比较多,因此想找一些高效的方式改一些有规律的代码. 比如: 我想将一些类似$rowss[MaxGetCash_num], ...
- C#后台利用正则表达式查找匹配字符
/// <summary> /// 发送短信 系统固化短信 /// </summary> /// <param name=&qu ...
- 在VS中用正则表达式查找或替换
2005VS和2008VS正则替换规则如下(2013VS不适合,不需要的同学可以直接跳到2013VS的操作办法): Example: 查找#incldue中带有gl开头的头文件的,用include.+ ...
随机推荐
- 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段 ...
- 微信小程序 发送模版消息
微信小程序开发之发送模板消息 1,小程序wxml页面form表单添加 report-submit="true" <form bindsubmit="sub" ...
- 微信第三方平台解密报错:Illegal key size
今天在交接别人代码的时候遇到的,微信第三方平台解密报的错误,原因: 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size ...
- =delete(c++11)
1.为什么要阻止类对象的拷贝? 1)有些类,不需要拷贝和赋值运算符,如:IO类,以避免多个拷贝对象写入或读取相同的IO缓冲 2.如何阻止? 1)不定义拷贝构造函数和拷贝赋值运算符时,好心的编译器也会及 ...
- 三)mybatis 二级缓存,整合ehcache
mybatis-config.xml <setting name="cacheEnabled" value="true" /> PersonMapp ...
- 201709020工作日记--synchronized、ReentrantLock、读写锁
1.reentrantLock java.util.concurrent.lock 中的Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现.这就为Lock ...
- (网络流 模板 Dinic) Drainage Ditches --POJ --1273
链接: http://poj.org/problem?id=1273 代码: //Dinic #include<stdio.h> #include<string.h> #inc ...
- STL---规范
1. "插入操作" 新插入的数据位于‘哨兵迭代器“所指的节点的前方,并返回指向新插入位置的‘迭代器(指针)“.这是STL对于插入操作的标准规范. 2.链表操作 对于一个链式表,如果 ...
- IDEA14添加SVN
今天升级IDEA14,发现SVN变了,折腾了好一会才搞好.记录一下,希望其他人能少走弯路.主要是IDEA14的svn是用命令行工具进行操作,这样对以后SVN的兼容性也会好很多,这个在他们官方的博客上也 ...
- hdu 5012 模拟+bfs
http://acm.hdu.edu.cn/showproblem.php?pid=5012 模拟出骰子四种反转方式,bfs,最多不会走超过6步 #include <cstdio> #in ...