/*正则表达式概念
由普通字符及特殊字符组成(元字符)组成的对字符串过滤的逻辑公式
创建方式
1.字面量
var reg=/abc/;
2.构造函数
var reg1=new RegExp("参数","i");
var reg=new RegExp('stud1','i');
第二个参数为可选参数,用来修饰这个正则表达式
i表示不区分大小写
test是正则表达式的方法
alert(reg.test("sTuD11"));//结果为true
如果要检测字符串(test参数中)含有这个字符串,结果为true
var reg=/STUdy/ig//g表示全局匹配
console.log(reg.test("asstudy"));
var reg=/day/ig;
console.log(
reg.exec("good good study,Day day up")//返回类数组对象,结果:"Day",index:16
);
在使用exec方法时,正则表达式如果不是全局匹配,则每次从0开始匹配
exec方法,返回一个为数组,将匹配成功的内容返回给你,如果没有结果返回为空
console.log(reg.exec("day aday good"));//index:0
console.log(reg.exec("day aday good"));//index:5
console.log(reg.exec("day aday good"));//index:null
var str="goole llld TMd tmdd ooff";
var reg=new RegExp("tmd","ig");
alert(str.replace(reg,"***"));//全局匹配,全部替换
字符串的match方法,全局匹配将匹配到的结果都放到一个数组里
var pattern=/good/ig;
var str="gooD good nihao good hello";
var arr=str.match(pattern);
console.log(arr);//结果:["gooD", "good", "good"]
var arr1=pattern.exec(str);
console.log(arr1);
//字符串的search方法,,用于查找符合正则子串的位置,只返回第一个位置
var pattern=/good/g;
var str='Good good good student';
console.log(str.search(pattern));//结果:5
var str="Gaod good study day";
console.log(str.split(/good/i));//结果["Gaod ", " study day"]
console.log(str.split(/g..d/i));//结果["", " ", " study day"]
.元字符表示,除了换行之外的所有单个字符
var reg=/g...gle/ig;
var str="goodleg--gle";
console.log(reg.test(str));//false
*号 元字符,出现任意次(0-n)次,重复*前面的单个字符多次匹配
var reg=/aa.*gle/i;
var str="aaaaaabaaaagle";
console.log(reg.test(str));//true;
console.log(str.match(reg));
//+表示至少出现一次
var reg=/g.+gle/ig;
var str="g.+gle";
console.log(reg.test(str));//true
//贪婪匹配
//?表示0-1次表示转义,就是将特殊字符变为普通字符
var reg=/g?gle/ig;
var str="ggggggle";
console.log(reg.test(str));//true
alert(arg1);
//[]表示字符出现的范围a-z
var reg=/g[0-9a-zA-Z_]+gle/g;
var str="g_gle+gle";
console.log(reg.test(str));
//w等价于[a-zA-Z0-9_]字母数字下划线
//W表示非字母数字下划线
var reg=/a\wc/g;
var str="a\wc";
console.log(reg.test(str));//true
//d代表数字 等价于[0-9]
var reg=/gd+g/g;
var str="gg0gle";
console.log(reg.test(str));//true
//D{7,}匹配至少7个非数字,相当于[^0-9]{7,}
//{3}三个 {3,5}至少三个至多五个 {,5}最多五个
var reg=/aD{3}gle/g;
var str="abcdgle";
console.log(reg.test(str));
console.log(str.match(reg));
//var reg=/D{7,8}/g;
var reg=/[^0-9]{7,}/;
var str="1aaaaaaaa";
console.log(reg.test(str));
console.log(str.match(reg));
var reg=/^c.+ab$/;
var str="cbaaaaab2c2ccab";
console.log(reg.test(str),str.match(reg),str.search(reg));
//s匹配空格
var str="good Goot gooolle lle";
console.log(str.replace(/s/g,""));//以空字符串代替空格
//可以匹配是否到了边界
var reg=/google/g;
var str2="aagoolea xxgooglea";
var str="google"
console.log(reg.test(str2));//false
console.log(reg.test(str));//true
// |代表或者的意思 匹配其中一种字符串
var pattern=/google|baidu|bing|yahoo/;
var str="gbaidueee";
console.log(pattern.test(str));
//()加上小括号 将内容进行分组,可以作为一个整体进行多次匹配
//匹配分组里的内容4-8次,(必须要连续出现)
var pattern=/(google){4,8}/g;
var str="ggoogleggoogleggoogleggoogleooggooggleogooggle";
console.log(pattern.test(str),str.match(pattern));
//获取8..8之间的任意字符
var pattern=/8(.*)8/g;
var str="This is 8google8";
console.log(str.match(pattern));//google
console.log(RegExp.$1);//得到第一个分组里的字符
var pattern=/8(.*)8/g;
var str="This is 8google8";
var result=str.replace(pattern,"<strong>$1</strong>");
document.write(result);
var pattern=/(.*)s(.*)/g;
var str="baidu taobao";
console.log(str.replace(pattern,"$2 $1"));//baidu taobao
//exec 方法将匹配到的内容返回,并将()分组内的内容也放入数组中返回
var pattern =/^([a-z]+)s([0-9]{4})$/gi;
var str="google 2018";
//console.log(pattern.test(str));//true
//console.log(pattern.exec(str));//"google 2018", "google", "2018"
console.log(pattern.exec(str)[1],RegExp.$1);//google google
检查邮政编码//共6位数字第一位不能为0
/^[1-9]d{5}$/
检查文件压缩包//xxx.zipxxx.gzxxx.rar;
/^w.(zip|gz|rar)$/
删除多余空格 //
str.replace(/s/,"");
删除首尾空格
str.replace(/^s+/,"");
str.replace(/s+$/,"");
电子邮件(xxxxx@xxxxx(.xxxx)+)
/^w+@w+(.w+)+$/
手机号
/^1(3|4|5|6|7|8|9)d{9}$/
身份证
/^d{17}(d|X)$/
日期(xxxx-xx-xx|xxxx/xx/xx|xxxx.xx.xx)
/^d{2}|d{4}[-/.]d{2}[-/.]d{2}$/
只能输入中文
str.replace(/[^u4e00-u9fa5]/,"");
账户名只能使用数字字母下划线,且数字不能开头,长度在6-15之间
/^[a-zA-Z_]w{5,14}$/
*/