正则表达式
正则表达式(regular expression-RegExp):是被用来匹配字符串中的字符组合的模式,是最简单的数据(字符串)验证方法,常用表单的验证
创建方法:使用正则字面量,/表达式/
正则数据类型:引用数据类型,因此也提供了一些方法
正则方法
exec()
用来将首次匹配到的字符串以数组方式输出,没有全局匹配
没有返回条件的将返回null
test()
用于检测字符串中是否含有正则表达式匹配的字符串
返回值:含有返回true,不含返回false
<script>
var str = 'hello';
var reg = /ll/;
let result = reg.test(str);
console.log(result);
</script>
正则的字符串相关方法
配合正则表达式方法有两种,一种是字符串的方法,一种是正则表达式的方法,以下是字符串方法
split()
用匹配到的字符切割父字符串返回切割后字符组成的数组。参数:使用正则
match()
用于匹配字符串,将匹配到的字符串以数组方式输出
参数可以使用字符串或者正则
search()
用于首次匹配到的字符串所在的位置,没有全局匹配
replace()
用于将匹配到的字符串替换为新字符串
第一个参数:匹配到的字符串
第二个参数:要替换的新字符串
<script>
var str = 'hello worldabc';
console.log(str.replace('world', 'WORLD'));
</script>
正则表达式的术语和操作符
正则表达式的组成:由普通字符和特殊字符(元字符)组成
普通字符包括:字母,或者是数字
特殊字符:() {} [] \ / | ^ $ ? + .
正则中特殊字符必须使用转义字符\
修饰符
书写在正则表达式后面,如://g
g 执行全局匹配
i 忽略大小写的匹配
m 多行匹配
字符集
把所有匹配的可能性都书写在中括号内,用于匹配一个字符
简单类 直接书写所有的可能性
比如:[abc]表示匹配的结果可能是a或者b或者c
范围类 表示一类可能性 [0-9][a-z][A-Z]
组合类 表示不同类型的范围组合[0-9a-z] [a-zA-Z]
负向类 表示不包含后面书写匹配字符串的可能性,[^]必须书写在中括号左侧
边界
^ 开头匹配
$ 结尾匹配
\b 单词边界,用于查找位于单词开头或者结尾的匹配
\B 非单词边界,用于查找不处在单词开头或结尾的匹配
量词
{n} 硬性量词,表示出现n次
{n,m} 软性量词,表示至少出现n次,最多不能超过m次
{n,} 表示至少出现n次
+ 表示至少出现1次 {1,}
* 表示出现0次或者多次 {0,}
? 表示出现0或者1次 {0, 1}
分组
或操作符:| 表示可能性,如a|b|c
用于处理多个重复的数据,通过()定义分组
分组的反向引用
表示正则表达式匹配的字符串再次进行使用。\编号(正则表达式中使用),$编号(在正则表达式外使用)。编码从1开始,依次进行分组的编码。1,2,3...
一个分组就是一个编码,只能在正则使用
非捕获组:不会创建反向引用的分组
(?=exp) 表示其后紧接指定字符串的字符串
(?!exp) 表示其后没有紧接字符串的字符串
<script>
let str = 'hello:123*123';
console.log(str.replace(/([0-9]+)\*(\1)/, '$1+$2'));
</script>
预定义类
预定义类表示一类字符,是一些特殊字符集的简写
. 表示除了换行和回车之外的任意字符
\d 表示数字字符
\D 表示非数字字符
\s 表示空白字符
\S 表示非空白字符
\w 表示单词字符(所有的 数字字母下划线)
\W 表示非单词字符
匹配中文:[\u4e00-\u9fa5],是一个固定用法,中文只能在正则表达式里这样表示