//1.什么是正则?
//用于匹配有'规律'的字符串
//2.常用的正则方法有2个
// test() 返回true和false
// exec() 返回数组和null
//3.支持正则的字符串方法有4个
// match()
// search()
// split()
// replace()
//4.正则的创建方式
//1)正则的字面量表达方式
var reg = / /igm
//i:忽略大小写 ignore -->ig no re
//g:全局 global
//m:换行
console.log(typeof reg);//object
//2.)正则构造函数
var reg = new RegExp('匹配的字符', '修饰')
var str = 'abc123'
var reg = /c/
//正则对象的2个方法
console.log(reg.text(str));
console.log(reg.exec(str));
//字符串的4个方法
console.log(str.match(reg));//与exec相似(找到返回数组,找不到返回null)
console.log(str.search(reg));
console.log(str.split(reg));
console.log(str.replace(reg, '-'));
//5 . 和 *
// .任意字符
// *任意次数 0~n
// .*任意字符出现任意次数
var str = 'this is a bx'
var reg = /t.*gi/
console.log(reg.test(str));
//6 .
var str = 'google'
var reg = /g..gle/
console.log(reg.test(str));
//7.[] 一个位置的取值范围
//[a-z] a到z
//[az] a或z
var str = 'google'
var reg = /g[a-z][a-z]/
console.log(reg.test(str));
//8. + 表示是1次以上
var str = 'google'
var reg = /g[a-z]+gle/
console.log(reg.test(str));
//9. [^a-z] 不是a-z
var str = 'google'
var reg = /g[^0~9]+gle/
console.log(reg.test(str));
//10.\w 等价于[a-zA-Z0~9_]
//11.\W 等价于[^a-zA-Z0~9_]
var reg = /g\W+gle/
var str = 'g!gle'
console.log(reg.test(str));
//12.\d [0~9]
var str = '19973125898'
var reg = /[1][3-9]\d{9}/ //用正则匹配电话号码
console.log(reg.test(str));
//13.\D [^0~9]
var str = 'google'
var reg = /g\D+gle/
console.log(reg.test(str));
//14. {}
// {n}固定次数
var str = '19973125898'
var reg = /[1][3-9]\d{9}/ //用正则匹配电话号码
console.log(reg.test(str));
// {n,}最少n次,最多不限
var str = ''
var reg = /\d{5,}/
// {n,m}最少n次,最多m次
var str = ''
var reg = /\d{5,12}/
console.log(reg.test(str));
//15. ^ $
// 限制边界
var reg = /^\d{6}$/
var str = '123456'
console.log(reg.test(str));
//16. \s 空白
var reg = /google\s\d{4}/
var str = 'google 1234'
console.log(reg.test(str));
//17. \S 非空白
var reg = /google\S\d{4}/
var str = 'goole`1234'
console.log(reg.test(str));
正则的判断
// js的或 || , 正则的或 |
var pattern = /google|baidu|bing/; //匹配三个中的其中一个字符串
var str = 'googl2e bai3du;bing1'
console.log(pattern.test(str)); //true
// 分组模式匹配:()
var str = '我爱前端我爱前端我爱前端'
var reg = /(我爱前端){3}/
console.log(reg.test(str));
// 获取8..8之间的任意字符
var pattern = /8(.*)8/
var str = 'this is 8google8 baab 8ggg8'
console.log(str.match(pattern));
console.log(RegExp.$1); //"google8 baab 8ggg"
var reg = /^([a-z]+)\s([0-9]{4})$/i
var str = 'google 2016'
console.log(reg.exec(str));
console.log(RegExp.$1);//google
console.log(RegExp.$2);//2016
//非捕获 ?:(理解为不包括)
var reg = /^(?:[a-z]+)\s(?:[0-9]{4})$/i
var str = 'google 2016'
console.log(reg.exec(str));
console.log(RegExp.$1);//不显示
console.log(RegExp.$2);//不显示
//转义 \
// var str = ".[]";
// var reg = /\.\[]/;
// console.log(reg);
// console.log(reg.test(str));
var str = '\w'
var reg = /\w/
console.log(reg.test(str));
var str = "1,baidu98\n2,google99\n3,bing100";
var reg = /^\d/gm;
console.log(str.replace(reg, "#"));