@wy
2017-12-14T17:27:14.000000Z
字数 1339
阅读 549
正则表达式
2017课程大纲
什么是正则表达式
正则表达式,又称规则表达式,查找匹配某些符合规则的字符串,正则表达式就是写这种规则的工具
创建正则表达式
- 字面量定义:/规则表达式/[修饰符]
- 对象方式: new RegExp(规则表达式字符串,[修饰符])
规则表达式组成
- 普通字符:普通字符包括大小写的字母和数字,以及一些常用的符号
- 元字符:具有特殊意义的专用字符。 比如:{}、[]、()、\d、\w 等等
修饰符
- 修饰符是影响整个正则规则的特殊符号
- 修饰符可以具有以下值的任意组合:
- g(global ): 全局匹配,找到所有匹配,而不是在第一个匹配后停止
- i(ignore): 忽略大小写
- m(multiline): 多行模式匹配,分别匹配每一行的开始和结束(由 \n 或 \r 分割)
正则的方法---test
- 作用:执行一个检索,用来查看正则表达式与指定的字符串是否匹配
- 语法:regexObj.test(str)
- 参数str:用来与正则表达式匹配的字符串
- 返回值:如果正则表达式与指定的字符串匹配 ,返回true;否则false
字符串的方法
string.search()
- 作用:检索指定字符串或正则表达式匹配到的字符串首次出现的位置
- 语法:string.search(string|regexObj)
- 参数:字符串或正则表达式
- 返回值:匹配到的字符串首次出现的位置;没有检索到返回-1
string.match()
- 作用:检索指定字符串或正则表达式匹配到的字符串
- 语法:string.match(string|regexObj)
- 参数:字符串或正则表达式
- 返回值:返回数组---把匹配到的字符串放在数组中;没有检索到返回null
- 注意:带有g,全局匹配,返回的是匹配到的字符串组成的数组;不带g,匹配一个字符串,并且数组会有index和input属性
string.replace()
- 作用:用来替换字符串中的某些符合规则的字符
- 语法:string.replace(string|regexObj,string|function)
- 参数:第一个参数:字符串或正则表达式;第二个参数:字符串或函数
- 返回值:替换后新字符串
- 第二个参数为函数,必须要有返回值,否则替换后的内容为undefined
元字符
- 正则表达式中有特殊含义的字符
- \ 传义符 传义符后面跟上一个字符,代表特殊的内容
- \d 代表一个数字
- \D 代表一个非数字
- \s 一个空格
- \S 非空格
- \w 字母、数字、_
- \W 非字母、数字、_
边界符
- \b 单词边界
- \B 非单词边界
- ^ 字符串开始
- $ 字符串结尾
数量词
- 指定规则出现的次数
- {n} 重复出现n次
- {n,} 重复出现至少n次,最多不限
- {n,m} 重复出现至少n次,最多重复出现m次
- ? 出现0次或1次,等价于{0,1}
分组
- 规则表达式中使用(),代表分组、子表达式、子模式
- (?:)不捕获分组信息
字符集合
- 规则表达式中使用[],匹配集合中的任意一个字符
- 可以使用连字符'-'指定一个范围;[1-9]、[a-z]
- [^]排除字符,匹配任意不在括号内的字符
- 匹配中文:[\u4e00-\u9fa5]
正则中的两种模式
- 贪婪模式:尽可能多的匹配
- 懒惰模式:尽可能少的匹配
- 加上 ? 开启懒惰模式
案例精选
- 【实例】验证QQ
- 【实例】验证邮箱
- 【实例】去除小说文本标签
- 【实例】过滤敏感词