JavaScript-day18-个人学习笔记
一、RegExp对象:封装了正则表达式,提供了利用正则表达式执行验证和查找的API。
1、何时使用:只要利用正则表达式执行验证和查找功能时。
2、创建:2种:
(1)var reg=/正则表达式/ig;何时使用:正则表达式在运行时不会改变。
(2)var reg=new RegExp("正则表达式","ig");何时使用:在运行时正则表达式可能被改变时。
强调:所有\都要改为\\
var str1="\\d{15}(\\d\\d[0-9xX])?";var reg=new RegExp(str1,"");
3、如何使用:2种操作:
(1)格式验证:var bool=reg.test(str)
验证:要求从头到尾必须完整匹配!
问题:test方法默认只要部分匹配即可!
解决:都要在正则表达式前加^,后加$;^表示开头位置;$表示结尾位置;^和$连用表示从头到尾必须完整匹配。
例:密码强度要求:6密码,只能是字母,数字的组合,至少包含一位大写字母,至少包含一位数字
预判:a、不全由小写字母或数字组成,可能包含大写或符号(?![a-z0-9]*$);b、不全由大写字母或小写字母组成,可能包含数字或符号(?![a-zA-Z]*$)
正式规则:只能是字母数字的组合,屏蔽符号(a-zA-Z0-9){6}
完整:(?![a-z0-9]*$)(?![a-zA-Z]*$)[a-zA-Z0-9]{6}
(2)查找API:var arr=reg.exec(str):在str中查找所有符合reg规定的关键字,要加g。
其中:arr[0]:保存了当前关键字的内容;arr.index:保存了当前关键字的位置;reg.lastIndex:保存下次开始查找的位置。
何时使用:只要即查找内容,又查找位置,只能用reg.exec。
总结:查找关键字
a、var i=str.search(reg)——判断有没有;缺点:不能指定开始位置
b、var arr=str.match(reg)——获得所有关键字内容,个数;缺点:不能返回位置
c、var i=str.indexOf("kword"[,starti])——从指定位置开始,查找下一个关键字的位置;缺点:不支持正则
d、var arr=reg.exec(str)——即获得内容,又获得位置;缺点:复杂
4、正则:贪婪模式与懒惰模式
默认贪婪模式:默认总是匹配最长的符合条件的字符串
原因:.*或.+等引起
懒惰模式:仅匹配最短的符合条件的字符串
贪婪变为懒惰:(.*?)
5、从正则表达式匹配结果中获取子内容:2步:
(1)正则表达式中:用()包括要获取子内容的部分
(2)程序中,本次查找后:RegExp.$n,取本次匹配结果中第n个()匹配的子内容,正则中n从1开始。
二、String中的正则API:4个
1、2个查找:str.search(reg) str.match(reg)
2、1个替换:str.replace(reg,"")
固定套路:利用replace格式化数据,替换值中,也可使用$n,和RegExp.$n的用法完全相同
3、1个切割:var arr=str.split(reg);
三、Math:专门执行数学计算的对象,封装了数学计算中常用的常量
1、取整:3种
(1)上取整:Math.ceil(n)
(2)下取整:Math.floor(n)
(3)四舍五入取整:Math.round(n);
round vs toFixed
toFixed:Number对象、按任意小数位数、返回字符串
round:Math对象、只能取整、返回数字
2、乘方/开平方:
乘方:Math.pow(n,m):计算n的m次方
开平方:Math.sqrt(n):计算n的平方根
3、获取最大值、最小值:
Math.max(a,b,c....)
Math.min(a,b,c....)
固定套路:变相实现获取数组中最大值;Math.max.apply(Math,arr);相当于Math.max(arr[0],....)
4、随机数:Math.random();0<=n<1
任意min到max之间取一个随机整数;公式:parseInt(Math.random()*(max-min+1)+min)