一、什么是正则表达式
正则表达式(regular expression)是一个描述字符模式的对象。ECMAScript 的RegExp类表示正则表达式,而String 和RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。
二、创建正则表达式
1.两种创建方式
a.构造函数创建方式:
var pattern = new RegExp("box"); //第一个参数字符串
var partern = new RegExp("box","i") //第二个参数可选模式修饰符
b.字面量创建方式:
var pattern = /box/;
var pattern = /box/i;
| 参数 | 含义 |
|---|---|
| i | 忽略大小写 |
| g | 全局匹配 |
| m | 多行匹配 |
2.RegExp对象的测试方法
| 方法 | 功能 | 返回值 |
|---|---|---|
| test | 在字符串中测试模式匹配,返回true或false | true/false |
| exec | 在字符串中执行匹配搜索,返回结果数组 | array/null |
| 方法 | 含义 |
|---|---|
| match(pattern) | 返回pattern中的子串或null |
| replace(pattern,replacement) | 用replacement替换pattern |
| search(pattern) | 返回字符串中pattern开始位置 |
| split(pattern) | 返回字符串按指定pattern拆分的数组 |
4.RegExp对象的静态属性
| 属性 | 短名 | 含义 |
|---|---|---|
| input | $_ | 当前被匹配的字符 |
| lastMatch | $& | 最后一个匹配字符 |
| lastParen | $+ | 最后一对圆括号内的匹配子串 |
| leftContext | $` | 最后一次匹配前的子串 |
| multiline | $* | 用于指定是否所有的表达式都用于多行的布尔值 |
| rightContext | $' | 在上次匹配之后的子串 |
| 属性 | 含义 |
|---|---|
| global | Boolean值,表示g是否已设置 |
| ignoreCase | Boolean值,表示i是否已设置 |
| multiline | Boolean值,表示m是否已设置 |
| lastIndex | 整数,代表下次匹配将从哪里字符位置开始 |
| source | 正则表达式的源字符串形式 |
三、获取控制 ------ **1.字符类:单个字符和数字**
| 元字符/元符号 | 匹配情况 |
|---|---|
| . | 匹配除换行符外的任意字符 |
| [a-z0-9] | 匹配括号中的字符集中的任意字符 |
| \d | 匹配数字 |
| \D | 匹配非数字 |
| [^a-z0-9] | 匹配任意非括号中的字符集中的字符 |
| \w | 匹配字母和数字及下划线 |
| \W | 匹配非字母和数字及下划线 |
2.字符类:单个字符和数字
| 元字符/元符号 | 匹配情况 |
|---|---|
| \0 | 匹配null字符 |
| \b | 匹配空格字符 |
| \f | 匹配进纸字符 |
| \n | 匹配换行符 |
| \r | 匹配回车字符 |
| \t | 匹配制表符 |
| \s | 匹配空白字符、空格、制表符、换行符,相当于[\t\f\n\r ] |
| \S | 匹配非空白字符 |
3.字符类:锚字符
| 元字符/元符号 | 匹配情况 |
|---|---|
| ^ | 行首匹配 |
| $ | 行尾匹配 |
| \A | 只有匹配字符串开始处 |
| \b | 匹配单词边界,词在[]内时无效 |
| \B | 匹配非单词边界 |
| \G | 匹配当前搜索的开始位置 |
| \Z | 匹配字符串结束处或行尾 |
| \z | 只匹配字符串结束处 |
4.字符类:重复字符
| 元字符/元符号 | 匹配情况 |
|---|---|
| x? | 匹配0个或1个x |
| x* | 匹配0个或任意多个x |
| x+ | 匹配至少一个x |
| (xyz)+ | 匹配至少一个xyz |
| x{m,n} | 匹配最少m个最多n个x |
5.字符类:替代字符
| 元字符/元符号 | 匹配情况 |
|---|---|
| this|where|logo | 匹配this或where或logo中任意一个 |
6.字符类:记录字符
| 元字符/元符号 | 匹配情况 |
|---|---|
| (string) | 用于反向引用的分组 |
| \1或者$1 | 匹配第一个分组中的内容 |
| \2或者$2 | 匹配第二个分组中的内容 |
| \3或者$3 | 匹配第三个分组中的内容 |
| x{m,n} | 匹配最少m个最多n个x |
7.贪婪与惰性
| 贪婪 | 惰性 |
|---|---|
| + | +? |
| ? | ?? |
| * | *? |
| {n} | {n}? |
| {n,} | {n,}? |
| {n,m} | {n,m}? |
8.捕获性分组与前瞻性分组
| 模式 | 表达式 | 特性 |
|---|---|---|
| 捕获性 | () | 有子串$1~$9,exec()包含分组值 |
| 非捕获性 | (?:) | 无子串 ,exec()不包含分组值 |
| 正向前瞻 | (?=) | ?=后面有什么 |
| 反向前瞻 | (?!) | ?!后面没有什么 |
9.反向引用
| 名称 | 表达式 | 特性 | 例子 |
|---|---|---|---|
| 反向引用 | \1 | 引用第一个被分组所捕获的串,对应分组$1,如果编号超过了,则会被当成普通的表达式 | /(\w)\s\1/ 同等于 /(\w)\s(\w)/ |
本文深入解析正则表达式的创建、使用方法及其在文本处理中的强大功能,涵盖构造函数与字面量创建方式,RegExp对象与String对象的正则表达式方法,以及各种元字符的详细解释。
6万+

被折叠的 条评论
为什么被折叠?



