正则表达式
1.什么是正则?
用于匹配有规律的字符串
2. 正则创建方式
//1). 正则字面量表示
var reg = /box/igm; //创建了正则表示对象
//i :ignore 忽略大小写
//g :global 全局
//m :换行
console.log(reg);
console.log(typeof (reg));
//2). 构造函数的方式创建正则
var reg = new RegExp("box", "igm");
3. 正则校验方法
test() //条件满足返回true,否则就false
exec() // 条件满足返回数组,否则就返回 null
4.支持正则字符串方法
search() //找到了返回下标,找不到返回-1
match() // 条件满足返回数组,否则就返回 null
split() //通过指定的格式,切割成为数组
replace() // 替换
. 任意字符串
var str = "this is a box BOX Box";
var reg = /b.x/
console.log(reg.test(str));
* 任意次数
var pattern = /g.*gle/; //.* 匹配0到多个字符
var str = "gsfsafasgle"
console.log(pattern.test(str));
[ ] : 表示字符可以出现的范围
var reg = /g[a-z]gle/i
var str = "gAgle";
console.log(reg.test(str));
var reg = /g[az]gle/i
var str = "gzgle";
console.log(reg.test(str));
var reg = /g[a-z0-9]gle/i
var str = "gzgle";
console.log(reg.test(str));
// [^a-z] 不是a-z, ^在中括号里,表示取反
var reg = /g[^a-z0-9]*gle/i
var str = "g@gle";
console.log(reg.test(str));
+ 至少1次
var reg = /g[a-z]+gle/;
var str = "gagle"
console.log(reg.test(str));
? 0次或1次
var reg = /g[a-z]?gle/;
var str = "gagle"
console.log(reg.test(str));
\w [a-zA-Z0-9_]
// \w [a-zA-Z0-9_]
var reg = /g\w+gle/;
var str = "g_gle"
console.log(reg.test(str));
// \W [^a-zA-Z0-9_]
var reg = /g\W+gle/;
var str = "g gle"
console.log(reg.test(str));
\d [0-9]
var reg = /\d+/g;
var str = "aaaaa1a";
console.log(reg.test(str));
// \D [^0-9]
var reg = /\D+/g;
var str = "aaaaa1a";
console.log(reg.test(str));
{n} 固定次数
var reg = /\d{5}/;
var str = "123111111";
console.log(reg.test(str));
{n,} 最少n次,最多不限
var reg = /\d{3,}/;
var str = "1211111111111";
console.log(reg.test(str));
{n,m} 最少n次,最n不限
var reg = /\d{3,8}/;
var str = "1234444444444444444";
console.log(reg.test(str));
^ 开始位置 $ 结尾位置
var reg = /^\d{5}$/;
var str = "123456789";
console.log(reg.test(str));
var reg = /^\d{5,}$/;
var str = "123456789";
console.log(reg.test(str));
var reg = /^\d{5,8}$/;
var str = "123456789";
console.log(reg.test(str));
手机
var reg = /^[1][3456789]\d{9}$/
console.log(reg.test(13812345678));
var reg = /^[1-9]\d{4,10}$/;
console.log(reg.test(83589742));
\s
var str = " 我 就是 帅 哥 ! ";
//删除全部的恐怖
console.log(str.replace(/\s/g, ""));
//删除开始与结束位置的空白
console.log(str.replace(/^\s+/, "").replace(/\s+$/, ""));
| --> ||
var pattern = /google|baidu|bing/; // | : 匹配三个中的其中一个字符串
var str = "googl2e bai3du;bingl"
console.log(pattern.test(str));
()
var pattern = /(google){4,8}/;
var str = "googlegooglegooglegoogle"
console.log(pattern.test(str));
var pattern = /8(.*)8/;
// var str = "this is 8google8 baab 8ggg8";
// 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);
m 换行
var pattern = /^\d+/gm;
// var str = "1,baidu98\n2,google99\n3,bing100";
// console.log(str);
// console.log(str.replace(pattern, "#"));
//\[]
// > >
// \ 转义
// var str = ".[/b]"
// var reg = /\.\[\/b]/;
// console.log(reg.test(str));
邮政编码(共6位数字, 第一位不能为0)
var reg = /^[1-9]\d{5}$/
// 电子邮件(xxxx@xxx(.xxx) +)
// var reg=/\w+@\w+\.\w+/ig
// var str1 = "zh.an.san@1000phone.com"
// var str2 = "zhansan@1000phone.com"
// var str3 = "zh.an@1000phone.com.cn"
// var reg=/^\w+(\.\w+)*@\w+(\.\w+)+$/ig;
手机号(13或14或15或18开头的11位数字)
// var reg=/^1[3458]\d{9}$/
// var reg=/^1[3-9]\d{9}$/g
用户名(只能使用数字字母下划线, 且数字不能开头, 长度在6-15位)
var reg=/^[a-z_]\w{5,14}$/i
身份证
var reg=/^[1-9]\d{16}[\d|x]$/i
console.log(reg.test('43042420011212123X'));
图片文件格式
var str=/\.(jpg|gif|png|jpeg|webp)$/