// 声明一个正则对象,modifiers是修饰符
// var patt= new RegExp(pattern,modifiers);
// 或者
// var patt2=/pattern/modefiers;

console.log("修饰符");
// 1 修饰符
// i忽略大小写 g全局 m多行匹配

// i,g
var str1='AbcAB';
var patt1=/ab/ig;
// 返回的是一个数组
console.log("i->"+str1.match(patt1));//i->Ab,AB


console.log("方括号");
// 方括号用于查找某个范围内的字符
var str2='abclll';
var patt2=/[a-d]/g;
console.log("[]->"+str2.match(patt2));//[]->a,b,c

//[^]不在这个范围内的
// 注意:和^[]不一样,^在外面的话是以它开头
var str3='abclll';
var patt3=/[^a-d]/g;
console.log("[]->"+str3.match(patt3));//[]->a

// [0-9] [a-z] [A-Z] [A-z]

// [a|b|c]查找任何指定的选项
var str4='abclll';
var patt4=/[a|d]/g;
console.log("[]->"+str4.match(patt4));//[]->l,l,l


console.log(" 元字符");
var str4='abclll';
var patt4=/[a-d]./g;
console.log(".->"+str4.match(patt4));//[]->ab,cl
// \w单词字符
var patt5=/\w/g;
console.log("\\w->"+str4.match(patt5));

// \d数字 \s空白字符 \b单词边界
// 以run开头或者结尾
var str6="Visit Runooob"; 
var patt6=/\bRun/g;
console.log("\\b->"+str6.match(patt6));

// \0null字符,\n换行符 \f换页符 \r回车 \t制表

console.log("量词");
// n+匹配任何包含至少一个n的字符串
var str7='aasd34aaa5';
var patt7=/a+/gi;
console.log("n+->"+str7.match(patt7));//n+->aa,aaa

//n*匹配任何包含0个或多个n的字符串
//n?匹配任何包含0个或1个n的字符串

//n{x}匹配x个n的系列的字符串
// n{x.}前面的模式n连续出现至少x次时匹配
// n{x,y}前面的模式n连续出现至少x次,至多y次
// n$以n结尾
// ^n以n开头
// ?=n匹配任何其后紧接指定字符串n的字符串
// ?!n匹配任何其后没有紧接指定字符串 n 的字符串。


console.log("方法");
// test
var str="Hello world!";
//查找"Hello"
var patt=/Hello.w/g;
var result=patt.test(str);
console.log("test返回值: " +  result); //true
//查找 "Runoob"
patt=/Runoob/g;
result=patt.test(str);
console.log("test返回值: " +  result);//false

// toString
var patt9 = new RegExp("RUNOOB", "g");
var res = patt9.toString();
console.log("toString->"+res);

// match方法,在字符中检索指定的值,或找到一个或多个正则表达式的匹配
// 如果pattern中没有g,则match方法只能执行一次匹配。
// 没有找到则返回null
// 找到则返回一个数组
var str='AbcAB';
var patt1=/ab/ig;
// 返回的是一个数组
console.log("match->"+str.match(patt1));
console.log("match->"+str.match(patt1)[1]);


// search检索与正则表达式相匹配的值,
var str10="Visit Runoob!  Runoob"; 
var n=str10.search("Runoob");
console.log("search->"+n);//6
// n是索引,r开头的索引

// replace替换第一个
var str11="Visit Microsoft! Visit Microsoft!";
var n=str11.replace("Microsoft","Runoob");
console.log(n);//Visit Runoob! Visit Microsoft!
// 替换所有,记住!!不要加双引号!
var a=str11.replace(/Microsoft/g,"Runoob");
console.log(a);//Visit Runoob! Visit Runoob!

// split()
var str12="visit a bai jh";
var n=str12.split(/i./g);
console.log(n);//[ 'v', '', ' a ba', 'jh' ]