Unit08: 正则表达式_2 、 Math 、 Date、Number、Boolean

1.RegExp(正则表达式对象)

       封装了正则表达式;提供了利用正则表达式执行验证和查找的API;

       何时使用:利用正则表达式执行验证和查找功能;

       如何创建:

              1.var reg=/正则表达式/ig;                 正则不能用变量/正则表达式固定不变;

              2.var reg=new RegExp("正则表达式字符串","ig"); 正则能用变量;为了与字符串区分,字符串里的\必须改为\\;不然计算机会认为\d是转义;

正则也可以用“[]”转义;

              如果正则表达式在运行时不会改变,用第一种;如果需要切换,用new

              3.使用:

                     1.格式验证:var bool=reg.test(str); 验证str是否符合reg规定;要加^$;

                       验证结果:true false

                       验证:要求从头到尾完全匹配;

                       问题:test默认只要部分匹配即可;

                       解决:都要在正则前加^,后加$;

                            ^$,完整匹配;

 

                     例:

                     密码强度要求:6-8位,只能是数字,字母组合;至少包含一位大写字母,至少包含一个数字;

                     预判:

                            1.不全由小写字母或数字组成;

                              可能包含大写或符号

                              (?![a-z0-9]*$)

 

                            2.不全由小写字母或大写字母组成;

                              可能包含数字或符号

                              (?![a-zA-Z]*$)

 

                     正则规则:只能是字母数字的组合,-->屏蔽符号;

                              [a-zA-Z0-9]{6}

 

                     完整:(?![a-z0-9]*$)(?![a-zA-Z]*$)[a-zA-Z0-9]{6};

 

                     2.查找:

                            var arr=reg.exec(str);在str中查找符合reg规定的关键字;要加g; 没找到(或找到最后没有了)返回null;

                             reg.lastIndex:下次查找开始的位置;默认是0;自动更新:lastIndex=index+kword.length;

                            var arr=reg.exec(str);

                                ["关键字内容"]-->arr[0] 数组永远只有一个元素,后一个找到的替换前一个找到的元素,arr.index也会更新;

                                      arr.index

                                     当前关键字位置

                            今后,即查找关键字,又返回位置,就用,var arr=reg.exec(str)

 

                     总结:查找关键字:

                            1.var i=str.search(reg)

                                   判断有没有

                                   缺点:不能知道开始位置;

                            2.var arr=str.match(reg)

                                   获得所有关键字的内容,个数;

                                   缺点:不能返回位置;

                            3.var i=str.indexOf("kword",starti)

                                   从指定位置开始,查找下一个关键字

                                   缺点:不支持正则

                            4.var arr=reg.exec(str);

                                   依次即获得每一个关键字内容,又获得位置

 

                     例:

                     找网页里所有a的href的值;

 

                     正则:贪婪模式与懒惰模式;

                     贪婪模式:默认总是匹配最长的符合条件的字符串;

                            原因:.*  .+

                     懒惰模式:仅匹配最短的符合条件的字符串;

 

                     贪婪模式转懒惰模式:.*?  .+?

 

                     从正则表达式匹配结果中获取字内容

                            1.在正则表达式中,用()包括要获取的子内容的部分;

                            2.程序中,在本次查找后,用:RegExp.$n 取子内容;

                              RegExp.$n --> 取“本次”匹配内容中的第n个()的内容;n从1开始;

 

2.string中支持正则的API:4

       2个查找:

              - search

              - match

 

       1个替换:

              - replace

              str.replace(reg,"");

              固定套路:

              利用replace格式化数据;“替换值”中,也可以使用$n,用法与RegExp.$n相同;

      

       1个分割:

       - split

 

       今后只要排序,都先转换成“数组”;soft();

 

3.Math:没有构造函数,不能实例化对象

       专门执行数学计算的对象;

       封装了数学计算中常用的常量;

       属性:Math.PI

       1.取整:3种:

              - 向上取整:

                     Math.ceil(n)

 

              - 向下取整:

                     Math.floor(n)

 

              - 四舍五入取整:

                     Math.round(n)

 

                     Math.round(n) VS n.toFixed(i)

                     n.toFixed(i):   Number类型  按任意小数四舍五入;返回值是:字符串  i:0-20;

                     Math.round(n)       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],arr[1],arr[2]...)

      

       4.随机数:

              Math.random();0<=n<1

              任意min 到max之间取一个随机整数

              parseInt(Math.random()*(max-min+1)+min);

 

4.Date

       封装了一个时间点,提供了对时间和日期的操作API;

       Date中封装了 从1970年1月1日0点0分0秒至今的毫秒数;便于计算;

 

       创建Date对象:4种;

       1.var now=new Date();创建一个新日期对象同时保存了*客户端*当前时间点的毫秒数;--当前时间 

       2.自定义时间对象;

              var time=new Date("2012/11/22 [18:35:00]");

       3.var time=new Date(年,-1,日[,时,分,秒])

 

       date.getTime():获得日期对象中的毫秒数;

 

       Date API:

       javascript-->左侧js对象

                -->js日期

                -->中间找:javascript Date对象参考手册

       1.每个分量都有一对儿 get / set方法;

       2.方法的命名:年月日星期 都不带s

                   时分秒毫秒  都以s结尾;

 

                   如:

                   设置小时:setHours()

                   设置月份:getMonth()

 

                   特殊:

                   年:get/setFullYear() -->使用4位完整年份;

                   星期:getDay():获得星期的序号;

                         日 一...六

                                 0  1  6

                        星期没有set方法;

                     月中的日:get/setDate();

       3.返回值:

              月中的日:1-31;

              其它分量都是从0开始到-1结束;

              月份:比正常减1;

 

              日期如何计算:2种;

              1.两日期对象直接相减,结果是毫秒差!

              2.对任意分量做加减:

                先用get取出来

                做计算

                再用set放回去;

              3.set(get()+计算);

 

       4.日期转字符串输出:

              1.date.tolocaleString();

              2.date.tolocaleDateString();

              2.date.tolocaleTimeString();

posted @ 2017-02-16 17:31  xiangcy  阅读(181)  评论(0编辑  收藏  举报