何时使用:只要定义字符串格式规则,都用正则表达式
最简单正则:一个关键词的原文,就是最简单的正则
1、备选字符集:规定某*一位*字符可选的备选文字列表
语法:[备选字符列表]
强调:(1)无论备选字符集中由有多少字符,都必须且只能选一个,
(2)一个[]只代表一位字符
排除字符:^
[^47]——表示除了4、7以外的所有字符都行
2、-:如果备选字符连续,可用“-”表示“到”
[A-Za-z] [0-9]
\d ==> [0-9] ——1位数字
\w ==> [a-zA-Z_]——1位字母或"_"下划线
\s ==> [空字符]——代表一位空字符:空格、Tab符
除此之外,还有\D \W \S——表示除了\d \w \s的字符都行(用得少)
4、量词:规定一个字符集出现的次数(2种)
(1)明确数量的量词(3种)
{min,max}:最少min位,最多max位
{min,}:至少min位
{n}:必须n位
案例——身份证号:至少15位数字 \d{15}
2位数字 \d{2}
最后一位数字或X x [0-9xX]
表示方法——\d{15}(\d{2}[0-9xX])?
(2)不明确数量的量词(3种)
? ==> {0,1}:可有可无,最多一次(“?”默认只修饰前边的字符)
* ==> {0,}:可有可无,多了数量不限
+ ==> {1,}:至少一次,多了数量不限
案例——手机号:+86可有可无,最多1次 (\+86)?(加“\”表示转义)
" "空格可有可无,多了数量不限 \s*(“\s”表示一个空格)
1 1
从3,4,5,7,8选一位 [34578]
最多必须是9位数字 \d{9}
表示方法——(\+86)?\s*1[34578]\d{9}
注意:"|"表示左右的“或”,可以不只是1或0两个选择
5、RegExp对象
封装了正则表达式,提供了利用正则表达式执行验证和查找的API
何时使用?
只要利用正则表达式执行验证和查找功能时
创建:2种
(1)var reg=/正则表达式/ig
何时使用:正则表达式在运行时不会改变
(2)var reg=new RegExp("正则表达式","ig")
何时使用:在运行时正则表达式
var str1="\d{6}";
var str2="\d{15}(\d\d[0-9xX])?"
var reg=new RegExp(str2,"")
如何使用:2种操作
(1)格式验证——var bool=reg.test();
验证:要求从头到尾必须完整匹配
问题:test方法默认只要部分匹配即可
解决:都要在正则表达式前加^,后边加$结束
^表示开头位置,$表示结尾位置
^/$联用表示从头到尾必须完整匹配
二、内置对象:5种
(1)String中的正则API
a、替换:str.replace(reg,"替换值")
固定套路:利用replace格式化数据
“替换值”中,也可使用$n和RegExp.$n用法完全相同
b、切割:var arr=str.split(str)
(2)Math:专门执行数学计算的对象
封装了数学计算中常用的常量
a、取整(3种)
上取整、 下取整、 四舍五入取整
Math.ceil(n) Math.floor(n) Math.round(n)
"天花板" "地板"round VS toFixed
a1.toFixed——Number对象 按任意小数位 字符串
a2.round——Math对象 只能取整 整数
var n=23.456;
n.toFixed(0); //23
n.toFixed(2); //23.46
b、乘方/开平方
乘方:Math.pow(n,m):计算n的m次方
开平方:Math.sqrt(n):计算n的平方根
c、获取最大值/最小值
Math.max(a,b,c)
Math.min(a,b,c)
固定套路:变相实现了获取数组中的最大值
Math.max.apply(Math,arr)——>Math.max(arr[0],...)
d、随机数:Math.random(); 0<=n<1
任意min到max之间取一个随机整数
60 100
随机取整数:parseInt(Math.random()*(max-min+1)+min)
除了用parseInt()方法,还可以使用floor()
(3)Date:封装了一个时间点,提供了对时间和日期的操作API
Date中封装了从1970-01-01 00:00:00 至今的ms数
创建Date对象:4种
a、var now=new Date(); //创建一个新日期对象同时,获得当前时间ms数
获得当前时间
b、var time=new Date("xxxx/xx/xx [xx:xx:xx]");
c、var time=new Date(年,月-1,日[,时,分,秒]);
date.getTime():获得日期对象中的毫秒数
Date API:
(1)每个分量都有一对get/set方法
getDay()获得日期,没有setDay()
(2)命名:年月日星期,不加s
时分秒毫秒,加s
(3)返回值:月中的日取值范围从1开始到31结束
其余的都是从0开始到减1结束
星期:日 一 二 .... 六
0 1 2 .... 6
月份:1月 2月 3月 .... 12月
0 1 2 11
日期:1日 2日 3日 .... 31日
1 2 3 31
Date计算——2种
a.两日期对象可直接详见,结果毫秒差
b.对任意分量做加减:先get出来,计算,再set回去
直接修改原日期对象
date.setXXX(date.getXXX()+-n)
(4)Array对象
(5)Event对象