您的位置:首页 > Web前端

Web前端复习——JS(正则表达式+内置对象)

2017-05-04 17:12 337 查看
正则表达式:专门规定字符中字符*格式规则*的表达式

何时使用:只要定义字符串格式规则,都用正则表达式

最简单正则:一个关键词的原文,就是最简单的正则

1、备选字符集:规定某*一位*字符可选的备选文字列表
语法:[备选字符列表]
强调:(1)无论备选字符集中由有多少字符,都必须且只能选一个,

              (2)一个[]只代表一位字符

  排除字符:^
[^47]——表示除了4、7以外的所有字符都行

2、-:如果备选字符连续,可用“-”表示“到”
[A-Za-z] [0-9]

3、预定义字符集:专门表示常用的连续字符集
\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对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息