1、*****正则表达式: 什么是:定义字符串中字符出现【规则】的表达式! 何时使用:切割、替换、【验证】 如何使用:语法:/正则表达式/ 1、最简单的正则:关键字原文"no" -> /no/后缀 后缀:g:全部 i:忽略大小写
2、备选字符集:/^[备选字符集]$/
强调:
1、一个中括号,只管一个字符
2、正则表达式默认只要满足就不管后续了,用户只要满足后面就可以乱来,我们希望从头到尾完全匹配,解决:前加^后加$ - 要求从头 到尾完全匹配 - 【只要你是做验证就必须加这个东西】
3、如果备选字符集的ascii码是连续的,可以用-省略掉中间的部分
比如:一位数字:[0-9]
一位字母:[A-Za-z]
一位数字、字母、下划线:[0-9A-Za-z_]
一位汉字:[\u4e00-\u9fa5]
除了xxx之外的:[^0-9] - 很少使用,范围太广了
3、预定义字符集:前辈们提前定义了一些字符集,方便我们程序员使用
一位数字:\d
一位数字、字母、下划线:\w
一位空白字符(空格、制表符、换行):\s
一个除了换行外的任意字符:. - 很少使用,范围太广了
建议:优先使用预定义字符集,预定义满足不了的我们再用备选字符集补充
问题:不管备选字符集还是预定义字符集,一个都只管一位
4、量词:规定一个字符集出现的次数:
1、有明确数量:
字符集{n,m} - 前边相邻的字符集最少出现n次,最多出现m次
字符集{n,} - 前边相邻的字符集最少出现n次,多了不限
字符集{n} - 前边相邻的字符集必须出现n次
2、无明确数量:
?:前边相邻的字符集,可有可无,最多1次
*:前边相邻的字符集,可有可无,多了不限
+:前边相邻的字符集,至少一次,多了不限
5、选择和分组:
选择:在多个规则中选一个
规则1|规则2
分组:将多个字符集临时组成一组子规则
(规则1|规则2)
6、指定匹配位置:
^:开头
$:结尾
特殊:两者同时使用,前加^后加$:表示从头到尾要求完全匹配 - 只要你做【验证】
7、预判:作用:专门用于做密码强度:
4位密码,数字和字母的组合,至少出现一位数字和一位大写
/^(?![预判]+$)[0-9A-Za-z]{4}$/
预判公式:
(?![0-9]+$); -> 不能全由数字组成,可能由大写、小写、特殊符号、汉字、日文、韩文....,具体用户能输入什么要看后面放了什么字符集
(?![0-9A-Z]+$) -> 不能全由数字组成,也不能全由大写组成,也不能全由数字和大写的组合
/^(?![0-9a-z]+$)(?![A-Za-z]+$)(?![A-Z0-9]+$)[0-9A-Za-z]{4}$/; - 用户可以数字、大写、小写,但是不能是数字和小写的组合,也不 能是大写和小写的组合,也不能是大写和数字的组合
2、*****字符串中支持正则表达式的API 1、切割:var arr=str.split("切割符"/RegExp) 可以用正则让我们的切割符变为可变的
2、*****替换:
1、基础替换法:
var newStr=str.replace(/正则/g,"新内容");
//replace支持正则,并且要搭配上后缀g才可以找到全部
2、高级替换法:
var newStr=str.replace(/正则/g,function(a,b,c){
// console.log(a);//正则匹配到的关键字 // console.log(b);//正则匹配到的关键字的第一个字符的下标 // console.log(c);//原文本身 //判断关键字的长度 return a.length==2?"":a.length==3?"":"****"; });
3、格式化:
var str="500103198602215933";
// var reg=/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/; // str=str.replace(reg,function(a,b,c,d,e,f,g,h){ // 在replace的时候,正则如果出现了分组,我们会得到更多的形参, //// console.log(a);//正则匹配到的关键字 //// console.log(b);//第1个分组保存到的内容 //// console.log(c);//第2个分组保存到的内容 //// console.log(d);//第3个分组保存到的内容 //// console.log(e);//第4个分组保存到的内容 //// console.log(f);//第5个分组保存到的内容 //// ....具体多多少不清楚,要看你有多少个分组 //// console.log(g);//正则匹配到的关键字的第一个字符的下标 //// console.log(h);//原文本身 // // return c+"年"+d+"月"+e+"日"; // }) // console.log(str);
3、正则对象: 1、创建: *直接量方式:var reg=/正则表达式/后缀; 构造函数方式:var reg=new RegExp("正则表达式","后缀")
2、API:验证/测试:
var bool=reg.test(用户输入的内容);
true->验证成功 false->验证失败
总结:何时前加^后加$(验证),何时又需要加后缀g(替换)?
作业: 1、上午的练习 2、QQ注册 - ssl.zc.qq.com/v3/index-ch… 关键点: 1、获取焦点事件:input.onfocus - 给用户显示提示文字 2、失去焦点事件:input.onblur - 获取用户输入的和正则进行验证,给出对和错的提示&样式 3、提交事件:form.onsubmit - 阻止提交:return false;