正则表达式
一套用于关键信息搜索与编辑的文字处理工具,可用于几乎所有的程序语言与计算机平台。
RegExp 对象
var reg = \\bis\b\g;
var reg = new RegExp('\bis\b’,’g')
| 修饰符 |
描述 |
| g |
global 全局搜索(默认匹配第一个值即停止) |
| i |
ignore 忽略大小写( 默认大小写敏感) |
| m |
multiple lines 多行搜索 (针对存在换行符的情况) |
- 属性
lastIndex: 在表达式匹配内容的最后一个字符的下一个位置(全局匹配模式下生效,否则为 0 )
source : 正则表达式的文本字符串
| 属性 |
描述 |
| global |
是否有 g 修饰符 |
| ignoreCase |
是否有 i 修饰符 |
| multiline |
是否有 m 修饰符 |
| lastIndex |
下一次匹配的字符的起始位置 |
| source |
正则表达式的源文本 |
| 方法 |
描述 |
| test |
返回 ture false (主要 lastindex) |
| exec |
没匹配返回 null 匹配返回 数组 arr arr[0] 为匹配文本 arr[1]为第一个子表达式(分组)匹配文本(如果有),,,arr[2]表示第二个子表达式匹配文本(如果有) ….以此类推 |
| compile |
|
| 方法 |
描述 |
| search |
参数可输入 字符串(数字默认为字符串) 也可以是正则表达(忽略全局匹配) |
| match |
参数接受正则表达式,区分全局模式 返回 null / 数组 匹配的结果 |
| split |
参数接受正则表达式 or 字符串 |
| replace |
参数接受正则表达式 or 字符串 |
元字符
正则表达式由两种基本字符类型组成
- 原义文本字符:比如 a 代表 a 文本字符串
- 元字符(正则表达式中表示特殊含义的非字母字符)
* + ? $ ^ . | \ ( ) { } []
方括号
元字符 [ ] 构建简单类
所谓类是指符合某些特性的对象,满足集合类任意规则即可
范围类
| 表达式 |
描述 |
| [0-9] |
0-9 任意数字 |
| [a-z] |
a-z 任意小写字母 |
| [A-Z] |
A-Z 任意大写字母 |
预定义类(特殊元字符)
| 元字符 |
描述 |
| . |
任意字符,除了换行和行结束符(\n, \r, \u2028 , \u2029) |
| \w |
单词字符,等同 [A-Za-z0-9_] |
| \W |
非单词字符 |
| \d |
数字字符 |
| \D |
非数字字符 |
| \s |
空白字符 [\t\n\x0B\f\r] |
| \S |
非空白字符 |
| \0 |
NUL 字符 |
| \n |
换行符 |
| \f |
换页符 |
| \r |
回车符 |
| \t |
制表符 |
| \cx |
控制符如:\cI 匹配 control + I,等价于 \t;x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的“c"字符 |
| \xxx |
以八进制数 xxx 规定的字符 |
| \xdd |
以十六进制数 dd 规定的字符 |
| \uxxxx |
以十六进制数 xxxx 规定的 Unicode 字符 |
边界(特殊元字符)
| 元字符 |
描述 |
| ^xx |
以 xx 开始 |
| xx$ |
以 xx 结束 |
| \b |
单词边界 |
| \B |
非单词边界 |
量词(特殊元字符)
| 元字符 |
描述 |
| ? |
出现 0 或 1 次(最多一次) |
| + |
一次或多次(至少一次) |
| * |
任意多次 |
|
出现 n 次 |
|
出现 n 至 m 次 |
|
至少出现 n 次 |
贪婪模式/非贪婪模式
正则表达式默认为贪婪模式,尽可能多匹配
非贪婪模式,,在量词后加上 ? 即可
分组(特殊元字符)
反向引用
字符$n 表示第几个分组
(分组1) (分组2)
$1 $2
不捕获分组 在分组内加 ?:
(分组1)( ?:分组2) (分组3)
$1 $2
前瞻
| 表达式 |
描述 |
| exp(?=assert) |
正向前瞻 |
| exp(?!assert) |
负向前瞻 |
| exp(?<assert) |
正向后顾 ! JavaScript 不支持 |
| exp(?<!assert) |
负向后顾 ! JavaScript 不支持 |