1、 直接量字符
字母和数字字符 | 自身 |
---|
\o | Null字符 | \t | 制表符 | 字符 | 匹配 | \n | 换行符 | \v | 垂直制表符 | \f | 换页符 | \r | 回车符 | \ | 将特殊字符转义成普通字符 |
2、作用域匹配字符
字符 | 作用 |
---|
i:ignoreCase | 匹配时忽视大小写 | m:multiline | 多行匹配 | g:global | 全局匹配 |
3、 正则表达式实例方法
方法名称 | 功能 | 返回值 |
---|
exec | 用来匹配字符串中符合正则表达式的字符串 | 返回值是一个result数组/null | test | 测试待检测的字符串中是否有可以匹配到正则表达式的字符串。全局匹配时,会记录上次检测到的数据位置,再进行下一次检测时从当前位置开始进行,如果某次为false,则下一次重新开始 | true/false | toString/toLocaleString | 把正则表达式的内容转化成字面量形式字符串/有本地特色的字符串 | string | valueOf | 正则表达式输出出来 | 返回正则表达式本身 |
4、正则表达式实例属性
实例属性 | 作用 |
---|
lastIndex | 1、初始值为0。 2、没设置全局匹配时,无论匹配多少次,该属性值始终为0 3、设置了全局匹配时,每执行一次exec/test来匹配,lastIndex就会移向匹配到的字符串的下一个位置,即每次正则查找的起点就是lastIndex | ignoreCase | reg.ignoreCase:判断正则表达式中是否有忽略大小写 | global | reg1.global:判断正则表达式中是否有全局匹配 | multiline | multiline:判断正则表达式中是否有多行匹配 | source | 返回字面量形式的正则表达式(类似于toString) |
5、方括号符
用于查找某个范围内的字符:
名称 | 功能 | 使用案例 |
---|
[abc] | 查找方括号之间的任何字符,包含任意一个返回true | var str = 'abc qwe abd’ var reg1 = /[abc]/;// 只要包含有a 或者 包含有b 或者包含有c 都返回为true console.log(reg1.test(str)); //true | [0-9] | 查找任何从0至9的数字 | | [a-z] | 查找任何从a至z的字母 | | [A-Z] | 查找任何从A至Z的字母 | \W==[a-zA-z0-9_] |
6、边界符
名称 | 功能 | 备注 |
---|
^ | 匹配输入开始。表示匹配行首的文本(以谁开始) | 反义字符: 1、括号内做取反:只要包含方括号内的字符,都返回 false。 2、如果^在括号外就匹配开头,与$符做精确匹配 | $ | 匹配输入结尾。表示匹配行尾的文本(以谁结束) | | /^字符$/ | 表示必须是精确匹配。 | 必须精确匹配开头和结尾 | \b | 匹配一个零宽单词边界 | \b 取完整单词 | \B | 匹配一个零宽非单词边界 | \B可以取单词之间的字符串 |
7、字符类
将直接量字符单独放进方括号内就组成了字符类,
字符类 | 含义 |
---|
. | 匹配除换行符\n和回车符之外的任何单个字符,等效于**[^\n\r]** | \d | 匹配一个数字字符,等效于[0-9] | \D | [^0-9]:不能取数字 | \w | 匹配包括下划线的任何单个字符,包括AZ,az,0~9和下划线**""**,等效于 [a-zA-Z0-9] | \W | [^a-zA-Z0-9_]:不能取括号内任意字符 | \s | 匹配任何Unicode空白字符,包括空格、制表符、换页符等,等效于[\f\t\n\r] | \S | [^\f\t\n\r]: 不能包含任意空格、制表符、换页符等 | | |
8、数量词
字符 | 含义 |
---|
* | >=0次 ==={0,} | + | ≥1 次==={1,} | ? | 0或1次{0,1} | {n} | n 次 | {n,} | ≥n 次 | {n,m} | n到m 次 |
9、选择,分组,引用,捕获
名字 | 功能 | 使用 |
---|
选择 | | :用于分隔供选择的字符 | 从左到右只要出现匹配项则返回,不会继续执行 | 分组 | ():有圆括号包裹的一个小整体成为分组。 | 1、分组被捕获时,以左括号开始向内输出/保存/编号。 2、以$1,$2—等对分组编号存储,可以被引用。 题外话:在前瞻表达式中,分组是不被捕获的,所以不能被引用 | 候选 | 一个分组中,可以有多个候选表达式,用 | 分隔 | var reg = /I Like (basketball | footbool | table tennis) | 捕获与引用 | 被正则表达式匹配(捕获)到的字符串会被暂存起来。其中,由分组捕获的串会从1开始编号:$1引用了第一个被捕获的串,$2是第二个,依次类推。 | console.log(RegExp.$1); //2021 console.log(RegExp.$2); //08 console.log(RegExp.$3); //29 | 嵌套分组的捕获 | 是以左括号出现的顺序进行捕获。 | /((apple) is (a (fruit)))/: 1: apple is a fruit 2:apple 3:a fruit 4:fruit | 引用 | 正则表达式里也能进行引用称为反向引用。通过\1,\2,\3…引用了被分组所捕获的串.如果编号越界了,则会被当成普通的表达式 | 捕获的\w{3}保存为\1被引用 var reg = /(\w{3}) is \1/ console.log(reg.test(‘kid is kid’)); // true console.log(reg.test(‘dik is dik’)); // true |
10、String的方法
方法 | 功能 /返回值 | 使用 |
---|
exec | 用来匹配字符串中符合正则表达式的字符串 | 返回值是一个result数组/null | search | 查找字符串中是否有匹配正则的字符串 | 有则返回字符串第一次出现时的位置,无则返回null | match | 匹配字符串中符合正则表达式的字符串 | 1、返回该字符串的一个数组,其中包括字符串内容、位置。 2、设置全局匹配,则一次性返回所有符合正则表达式的字符串数组 3、如果添加了分组,返回符合要求的字符串以及分组的一个数组 4、如果添加了分组并同时开启全局匹配则不会在数组中添加分组内容 | split | 以正则表达式的某种形式分割字符串 | str.split(reg); | replace | 以正则表达式的匹配到的内容替换成自定义内容。开启全局则一次性替换。 | 1、满足正则表达式条件的内容将被替换 2、如果开启全局模式 则替换所有满足条件的字符 3、replace(正则表达式, 要替换的内容) |
|