一、什么是正则
在常见的字符串检索或替换中,我们需要提供一种模式 表示 检索或替换的规则。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
- abc : 匹配 aabc 、aabbcc、abc
- [a-z]{4} : 小写 a-z 重复 4次 :abcd
- \d\d\d :三个数字
二、简单的例子
/正则表达式/ .test('123'); 匹配成功返回 true, 正则表达式用 斜线括起来
使用 new RegExp("正则表达式").test( ); new可以省略,默认大小写敏感,返回true
三、正则基础
1、表示字符
- . 点 匹配任意字符
- \D 是\d的补集
2、表示范围
- [a-z] : a到z
- [A-Z0-9a-z_] :相当于 \w
- [ABCD] : 表示匹配abcd中任一个
- [^abc] : 除了 abc以外的都可以
- ^Hi : Hi 开头的
- \bno : 匹配 空格 no
2、特殊字符转义
右斜线进行字符转义,转为普通的字符。
3、分组
- 分组,后面也可以使用/(abc)/。
- /(abc)\1/.test('abcabc'); (abc)分组\1 (\1 等价于,前面分组匹配到的字符串相当于 abc)
- (?:x) 仅分组,但不重复
3、重复
- x* : 重复 0次到多次(贪婪)
- x+ :重复一次到多次(贪婪)
- 非贪婪:匹配尽可能少的。*?匹配0个 , +?匹配1个
4、三个标志位
- global :正常一个长字符串,匹配到一个就结束了,如果想要匹配到全部的字符串,+global
- ignoreCase : 不区分大小写
- multiline : 分行跨行。
- gim : g-global ; i-ignoreCase ; m-multiline
- 通过RegExp对象,在第二个参数中写。
5、RegExp 对象属性
sorce:正则内容
6、RegExp对象方法
- .exec("字符串");用/abc/匹配字符串,获得abc
- toString();返回正则内容
- compile:改变正则属性,将正则变成 def
7、string类型与正则表达式相关的方法
- 分组(abc)\1等价 abcabc :检索 abcabc的索引。返回索引0.
- replace : 替换 把b 改成1 。使用非贪婪算法 b+? 匹配尽可能少,所以仅仅替换了第一个b, 不加+ 则四个b 换为一个1. aa1cc
- match :匹配一个组,匹配多个结果
- /b+/g --- global .
- splic 分割