正则表达式
创建正则表达式
-
正则概念
- 就是我们自己按照语法书写一套规则,用来检测 字符串 是不是符合规则的,从字符串里面捕获出来一部分符合规则的内容
- 正则表达式也是一个 复杂数据类型
-
创建方式
-
//字面量创建 var reg = /abcd/修饰符 //内置构造函数创建 var reg = new RegExp('abcd') //小括号里面以字符串的形式写我们的规则内容
-
正则表达式对象的方法
-
test() 检测
-
作用: 检测字符串是不是符合正则要求
-
语法: 正则.test(要检测的字符串)
-
返回值: 一个布尔值
true: 表示字符串符合正则要求
false: 表示字符串不符合正则要求
-
-
exec() 捕获
-
作用: 从字符串里面把满足要求的内容提取出来
-
语法: 正则.exec(要捕获的字符串)
-
返回值:
1. 在字符串里面没有满足正则要求的字符片段
=> 返回值就是 null
2. 在字符串里面有满足正则要求的字符片段
2-1. 正则没有 () 没有标识符 g
=> 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容
=> 只能捕获到第一个满足条件的字符片段
=> 你执行多少次, 都是从字符串的开头开始查找
2-2. 有标识符 g 的时候(g => 全局标识符)
=> 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容
=> 当你第二次执行这个方法的时候, 是从第一次的结束位置开始查找
=> 你执行多次的时候, 第二次和第一次的捕获结果可能不一样
=> 直到找不到了为止, 返回 null
2-3. 正则里面有 () 的存在
=> 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容
=> 索引 [0] 是总 字符串 里面捕获出来的 整体内容
=> 从索引 [1] 开始, 是每一个小括号里面的内容单独捕获出来
=> 小括号的顺序, 按照书写小括号 ( 的顺序开始数
-
常用字符串匹配正则方法
-
search()
-
作用: 在字符串中查找某一个字符片段
-
语法:字符串.search(正则表达式)
-
返回值:查找到就是查找到的索引
查找不到就是 -1
-
-
match()
-
作用: 从字符串里面捕获出满足条件的片段
-
语法: 字符串.match(正则表达式)
-
返回值:
在正则没有 全局标识符 g 的情况下, 和 exec 一模一样
在正则有 全局标识符 g 的情况下, 就是一个数组, 里面包含所有符合正则的内容
-
-
replace()
-
作用: 替换字符串里面的某一个字符片段
-
语法:字符串.replace(正则表达式, ‘替换成什么字符串片段’)
字符串.replace(正则表达式,function(item,index){return 值})
表示根据正则表达式找到要替换的内容,return的内容把找到内容替换
-
返回值:如果正则表达式没有全局标识符 g 那么就替换第一个内容, 替换好以后返回;
如果正则表达式有全局标识符 g 那么全部替换, 替换好以后返回
-
-
split()
- 作用:把字符串分割为字符串数组
修饰符
-
标识符
-
作用:修饰整个正则表达式的,写在正则表达式的最后面
-
i => 表示忽略大小写
g => 全局匹配
m =>多行匹配
字符匹配
点通配符
- 点(.)=> 表示的是 一个 非换行的任意内容
- . 匹配任何一个字符 是一个通配符
- . 把通配符.转为字符.
方括号范围匹配
-
[] => 字符组
-
写在中括号里面的任意 一个 字符都可以
-
一个中括号占一个字符位置
-
在中括号里面 点(.) 就是一个普通字符
[0-9] 等价于 \d 的意义
[0-9a-zA-Z_] 等价于 \w 的意义
-
-
中划线(-) => 到, 至
- 在 [] 或者 [^] 中使用的
- 表示从一个字符位置 到 一个字符位置
- 位置必须是 ASKII 码的序号连着的
-
中文匹配
- [\u4e00 - \u9fa5]
方括号字符反义
- [^] => 非字符组
- 写在这个符号里面的任意 一个 都不行
- 一个这个符号, 占一个字符位置
转义字符类
-
\s => 表示的是 一个 空格
-
\S => 表示的是 一个 非空格
-
\d => 表示的是 一个 数字
-
\D => 表示的是 一个 非数字
-
\w => 表示的是 一个 数字字母下划线
-
\W => 表示的是 一个 非数字字母下划线
-
\ => 表示转译符号
把没有意义的字母转换成有意义的符号
把有意义的符号转换成没有意义的字母
注意: 它只是把挨着自己的哪个转了
重复匹配
-
限定符
-
只是修饰前面 一个符号 的数量
1. * => 表示至少 0 个, 0 ~ 正无穷个都可以 2. + => 表示至少 1 个, 1 ~ 正无穷个都可以 3. ? => 表示 0 个 或者 1 个 4. {n} => 表示只能是 n 个 5. {n,} => 表示至少 n 个, n ~ 正无穷个都个以 {0,} 等价于 * 的意义 {1,} 等价于 + 的意义 6. {n,m} => 表示 n ~ m 个 //注意贪婪匹配,先匹配最大的字符串 例如:console.log("aaaaaaa".match(/a{1,4}/g));//先从最大的数字开始找,结果是aaaa,aaa console.log("aaaaaaa".match(/a{0,3}/g));//结果是aaa,aaa,a,"" {0,1} 等价于 ? 的意义
选择匹配
- | => 或者
- 一般和小括号连用, 表示一个整体或者另一个整体
分组
- () => 一个整体
起始和结束符
- 边界符
- ^(英文的) => 表示字符串的开头
- $(英文的) => 表示字符串的结尾
- 注意: 开头和结尾一起使用的时候, 表示从开头到结尾