1.数组的迭代方法
-
every
-
语法:arr.every(function(数组元素,下标,当前循环的数组){ })
-
作用:对数组元素进行判断,所有的判断都为true,结果才为true
var arr = [78,65,43,89,12,67]; //问:所有同学都及格了 var isJ = arr.every(function(value){ return value >= 60; }); console.log(isJ); //需求:判断字符串是不是纯数字 var str = "4732"; //[4.7.3.2] var isNumb = str.split("").every(function(value){ return value >= 0 && value <= 9; }); console.log(isNumb);
-
-
arr.some() : 对数组元素进行判断,只要有一个为真,结果就为真
2.正则对象
-
正则对象:RegExp
-
概念:提前定义的,用于检测字符串的逻辑公式 (正则表达式) /^1[3-9]\d{9}$/
-
作用:验证字符串是否满足条件 登录注册
2.1 创建正则
-
关键字new创建
//1.new关键字创建 new RegExp(检索的表达式,修饰符) ig var reg1 = new RegExp("[0-9]","ig"); //转义 console.log(reg1); // /[0-9]/gi
-
字面量创建
//2.字面量创建 var reg2 = /[0-9]/ig; console.log(reg2); // /[0-9]/gi
-
区别
//3.区别 var str = "web"; var reg3 = /str/ig; console.log(reg3); //字面量创建正则没有变量的概念, /str/gi var reg4 = new RegExp(str,"ig"); console.log(reg4); ///web/gi
2.2 修饰符
-
g : global 进行全局的匹配
//1.g : global 执行一个全局的匹配 var str = "j1a2v3u4i5j"; var reg1 = /[0-9]/; var reg2 = /[0-9]/g; console.log(str.replace(reg1,"*")); //j*a2v3u4i5j console.log(str.replace(reg2,"*")); //j*a*v*u*i*j
-
i:ignore case 进行不区分大小写的匹配
//2.i : ignore case : 执行一个不区分大小写的匹配 var str = "he is girl,He is girl"; var reg3 = /he/g; var reg4 = /he/gi; console.log(str.replace(reg3,"she")); //she is girl,He is girl console.log(str.replace(reg4,"she")); //she is girl,she is girl
2.3 元字符
2.3.1 元字符代表单个符号
-
.
. : 匹配除换行符以外的任意字符
//1) . : 匹配除换行符以外的任意字符 var str = "\nab\ncde"; var reg = /./ console.log(reg.exec(str)); //["a", index: 1] //web____ujiuye var str = "web0322ujiuye"; var reg = /web....ujiuye/; console.log(reg.exec(str)); //"web0322ujiuye" console.log(reg.exec("web03221ujiuye")); //null
-
[]
[] : 匹配字符集中的任意一位字符 [a-z]:匹配小写字母 [a-zA-Z]:匹配字母 [0-9]:匹配数字
[^]: 匹配除字符集中的任意一位字符
//2). [] : 匹配字符集中的任意一位字符 [a-z]:匹配小写字母 [a-zA-Z]:匹配字母 [0-9]:匹配数字 var reg = /[@#$%^&*]/; var str = "str#fd@!"; console.log(reg.exec(str)); //["#", index: 3] // [^]: 匹配除字符集中的任意一位字符 var reg = /[^0-9A-Z]/; //匹配除数字和大写字母外的任意字符 var str = "45243SASA#fdsfs"; console.log(reg.exec(str)); //["#", index: 9]
-
\d:匹配数字 \D:匹配非数字
//\d:匹配数字 \D:匹配非数字 var str = "q1w2"; var reg1 = /\d/; var reg2 = /\D/; console.log(reg1.exec(str)); //"1" console.log(reg2.exec(str)); //"q"
-
\w:匹配数字字母下划线 \W:匹配非数字字母下划线
//\w:匹配数字字母下划线 \W:匹配非数字字母下划线 var str = "w2"; var reg1 = /\w/; var reg2 = /\W/; console.log(reg1.exec(str)); //"w" console.log(reg2.exec(str)); //null
-
\s:匹配空格 \S:匹配非空格
//\s:匹配空格 \S:匹配非空格 var str = " hello world "; console.log(str.replace(/\s/g,"")); //helloworld
-
^ : ^a 以a开头 $ : a$ 以a结尾
//6. ^ : ^a 以a开头 $ : a$ 以a结尾 var str = "12345642432rwrewrw"; var reg = /^\d\d\d\d\d\d$/; console.log(reg.exec(str)); //null
2.3.2 元字符(量词)
-
? : 字符? 匹配前面的字符0次或1次
// ? : 字符? 匹配前面的字符0次或1次 var str = "https://www.jd.com"; var reg = /^https?:\/\/www\.jd\.com$/; //\转义,让符合只是一个字符,失去本身的意义 console.log(reg.exec(str)); //"["http://www.jd.com""
-
* : 字符* 匹配前面的字符0次或多次(连续的)
//2) * : 字符* 匹配前面的字符0次或多次(连续的) var str = "aasaaaaa3"; var reg = /a*/; console.log(reg.exec(str)); //"aa"
-
+ : 字符+ 匹配前面的符号至少1次
//3) + : 字符+ 匹配前面的符号至少1次 var str = "https://www.taobao.com"; //匹配网址 163.com var reg = /^https?:\/\/www\.\w+\.com$/; console.log(reg.exec(str));
-
{n,m} : a{n,m} 匹配前面符号最少n次,最m次
//4) {n,m} : a{n,m} 匹配前面符号最少n次,最m次 //验证QQ var reg = /^[1-9]\d{4,10}$/; //手机号 console.log(reg.exec("0123435435435353")); //{n} : 匹配n次 //验证银行卡密码 var reg = /^\d{6}$/; //{n,} : 匹配最少n次,最多无限 var str = "aaa1321321"; var reg = /a{5,}/; console.log(reg.exec(str)); //null //注意:量词之间不能同时使用 {} + ? * console.log(/.?{1,2}/); //报错
2.4 分组与 2|
-
|
// | 或 var str = "http://www.suibian.cn"; var reg = /^https?:\/\/www\.\w{2,}\.(com|net|cn|org|cc|edu)$/i; console.log(reg.exec(str)); //"http://www.suibian.cn"
-
() 分组
//() 分组 var str = "hello world"; var reg = /(hello) (world)/; console.log(reg.exec(str)); //["hello world", "hello", "world"] console.log(RegExp.$1); //获取第一个分组的内容 console.log(RegExp.$2); //获取第二个分组的内容 console.log(str.replace(reg,"$2 $1")); //world hello
2.5 前瞻后顾
-
(?:) : 非获取匹配
var str = "http://www.suibian.cn"; var reg = /^https?:\/\/www\.\w{2,}\.(com|net|cn|org|cc|edu)$/i; console.log(reg.exec(str)); //["http://www.suibian.cn", "cn"] 会获取到括号(分组)中的内容 var str = "http://www.suibian.cn"; var reg = /^https?:\/\/www\.\w{2,}\.(?:com|net|cn|org|cc|edu)$/i; console.log(reg.exec(str)); //["http://www.suibian.cn"] 不会获取到括号(分组)中的内容
-
(?=) : 前瞻 正向肯定预查 后面必需是什么
//1.(?=) : 前瞻,a(?=匹配条件) : a后面必须是什么 var str = "w2de"; var reg = /[a-z](?=[a-z])/; console.log(reg.exec(str)); //["d", index: 2] //需求:验证用户名,必须是数字和字母组成 {5-10} //(?=):必须 (?=.*\d.*):必须有数字 (?=.*[a-zA-Z].*) //.* 匹配除换行以外的任意0,多次 \d var reg = /(?=.*\d.*)(?=.*[a-zA-Z].*)^[0-9a-zA-Z]{5,10}$/; var str = "fd32fs"; console.log(reg.exec(str));
-
(?!) : 负前瞻 正向否定预查 后面不能是什么
//2.(?!) : 负前瞻 a(?!匹配条件) : a后面不能是什么 var str = "w2de"; var reg = /[a-z](?!\d)/; console.log(reg.exec(str)); //["d", index: 2] //需求:验证用户名,必须是数字和字母组成 {5-10} // /^[a-zA-Z]+$/ :纯字母 var reg = /(?!^[a-zA-Z]+$)(?!^\d+$)^[0-9a-zA-Z]{5,10}$/; var str = "eq1321321"; console.log(reg.exec(str));
-
后顾
//3.(?<=) : 后顾 (?<=匹配条件)a : a的前面必须是什么 var str = "w2de34"; var reg = /(?<=\d)[a-z]/ console.log(reg.exec(str)); //4.(?<!) : 负后顾 (?<!匹配条件)a: a的前面不能是什么 var str = "w2de34"; var reg = /(?<![a-z])\d/; console.log(reg.exec(str)); //["4", index: 5]
-
中文
//5.中文 var reg = /[\u4e00-\u9fa5]+/; var str = "jfd我是小可爱u2i432"; console.log(reg.exec(str));