http://jsbin.com/xexaxojuni/edit?js,console
1.匹配字符串(replace)
var reg = /\bis\b/
var str = 'he is a good boy.'
str.replace(reg,'IS');
// result: he IS a good boy.
2.REGEXP对象
Javascript 通过内置对象RegExp支持正则表达式
有两种方法实例化RegExp对象
-
字面量 var reg = /\bis\b/g
-
构造函数 var reg = new RegExp('\bis\b','g')
3.修饰符
g: global 全文搜索,不添加,默认搜索到第一个匹配停止
i: ignore case 忽略大小写,默认大小写敏感
m: multiple lines 多行搜索
4.元字符
正则表达式由两种基本字符类型组成: 原义文本字符,元字符
元字符是在正则表达式中有特殊含义的非字母字符
- ? $ ^ . | \ () {} []
\t 水平制表符
\v垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
字符类
我们可以使用元字符[ ] 来构建一个简单的类
所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符
表达式[ abc ] 把字符 a 或 b 或 c 归为一类,表达式可以匹配这类的字符
5.字符类取反
使用元字符 ^ 创建 反向类/负向类
反向类的意思是不属于某类的内容
表达式 [ ^abc ] 表示 不是字符 a 或 b 或 c 的内容
'a1b2c3d4'.replace(/[ abc ]/g/,'X');
X1X2X3d4
'a1b2c3d4'.replace(/[ ^abc ]/g/,'X');
aXbXcXXX
6.范围类
在 [ ] 组成的类内部是可以连写的 [a-zA-Z]
预定义类
\d === [0-9]
\D === [ ^0-9]
\s ===[\t\n\x0B\f\r] 空白符
\w === [a-zA-Z_0-9] 单词字符(字母、数字、下划线)
7.边界
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界
8.量词
? 出现零次或一次 ( 最多出现一次)
- 出现一次或多次 (至少出现一次)
- 出现零次或多次 (任意次)
{n} 出现n次
{n,m} 出现 n 到 m 次
{n,} 至少出现n次
贪婪模式:
'12345678'.replace(/\d{3,6}/g,'X')
'X78'
非贪婪模式
让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试
做法很简单,就是在量词后加 ?
'12345678'.match(/\d{3,6}?/g,'X')
['123','456']
9.分组
使用()可以达到分组的功能,使量词作用于分组
(Byron){3}
或
使用 | 可以达到或的效果
Byron | Casper
反向引用
'2021-03-14'.replace(/(\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1')
14/03/2021
网友评论