一. 在线工具:https://regexper.com/
二. 含义
1.修饰符
g:全文搜索,不添加的话,搜索到第一个匹配停止
i:忽略大小写,默认大小写敏感
m:多行搜索
2.元字符
\t:水平制表符
\n:换行符
\r:回车符
\b:单词边界或者数字[0-9]
\D:非数字字符[^0-9]
\B:非单词边界
[ ]:归为一类,代表或,例:[abc]为a或b或c
[^]:取反,例:[^abc]为不是abc
[-]:范围,例:[a-z],[0-9],[a-zA-Z]大小写同时
^:以xxx开头
$:以xxx结束
.:除了回车换行以外的所有字符
\s:空白字符
\S:非空白字符
\w:单词字符(数字字母下划线)[a-zA-Z_0-9]
\W:非单词字符[^a-zA-Z_0-9]
3.量词
?:零个或一个(最多一个)
+:一个或多个(最少一个)
*:任意个
{n}:n个
{n,m}:从n个到m个(贪婪模式,尽可能多匹配到m,{n,m}?,非贪婪模式,少数匹配到n)
{n,}:至少n个
{0,n}:最多n个
( ):分组,abc{3}量词只做用于c,(abc){3}量词作用于abc
|:或,ab(e|c)df
$:引用分组,"2018-09-23".replace( /(\d{4})-(\d{2})-(\d{2})/g , '$2/$3/$1' ),09/23/2018
(?: ):忽略分组,不被引用,(?:abc)
(?=):正向前瞻,符合表达式同时后面也符合断言,"a3*34vv".replace( /\w(?=\d)/g , "x" ),把后面是数字的单词替换成x
(?!):负向前瞻
三. 使用
1.字变量(替换“is”为“IS”)
var text="he is a boy ,this is a book, she is where?";
var reg=/\bis\b/g;
var now=text.replace(reg,"IS");
document.write(now);
2.构造函数
var reg=new RegExp('\\bis\\b','g');
3.方法
//测试字符是否有匹配表达式
reg.test("abc");
//返回匹配结果数组,否则返回null
reg.exec("abc");