回归JavaScript基础,六

主题:引用类型Date、RegExp的介绍。

上节主要主要介绍了Object、Array引用类型。这节将继续为大家介绍引用类型,并对书中的一些知识点进行总结与归纳,也借此巩固自己对JavaScript基础知识的掌握。(题外话:果然,语文不好是硬伤啊,从小就不喜欢写文章(⊙o⊙)… 望读者理解,我都是随性发挥的 ヘ(´ー`ヘ) )

①Date类型是在早期Java中的java.util.Date类基础上构建的。

1 var date = new Date(); //创建一个日期对象。当语句执行时,会获取执行当时的时间

②Date类型使用自UTC(国际协调时间)1970年1月1日零时开始经过的毫秒数来保存日期。

1 var date1 = Date.parse("Jul 4, 2017"); //1499097600000
2 console.log(new Date(date1)); //Tue Jul 04 2017 00:00:00 GMT+0800 (中国标准时间)
3 var date2 = Date.UTC(2017, 6, 4); //1499126400000 注意:月份是从0到11,巨坑!
4 console.log(new Date(date2)); //Tue Jul 04 2017 08:00:00 GMT+0800 (中国标准时间)
什么鬼,这两个结果并不是我想要的结果!怎么会多了8个小时。我猜测这应该和时区有关!

③日期也可以进行比较,666

1 var date1 = new Date(2017, 0, 1);
2 var date2 = new Date(2017, 1, 1);
3 console.log(date1 < date2);  //true

④Date对象的方法,之间w3c上查阅即可

⑤RegExp正则表达式是用来匹配字符串的工具。我们可以用它来匹配字符串,看字符串是否符合我们的规则;我们可以用它来切分字符串。尽管现在很多js插件为我们提供了便捷的验证字符串方法,但作为一个前端开发者还是有必要了解正则表达式。要知道JavaScript一开始就是为了在前端判断用户输入合法而产生的!

⑥创建正则表达式,模型:var expression = / pattern / flags;或者new RegExp创建

1 var regExp1 = /abcd/;
2 var regExp2 = new RegExp('abcd');
3 console.log(regExp1 === regExp2); //false
4 console.log(regExp1.source === regExp2.source); //true
书中说,创建正则表达式会调用RegExp构造函数,每次都创建新的RegExp实例。这说明每个正则表达式都是一个新的对象,导致了上面两个看似相等不等吧

⑦正则表达式有三种模式,flags来表示。

1 var regExp0 = /abc/;    //不写模式的话就是普通匹配,匹配到第一个符合后立即停止
2 var regExp1 = /abc/g;  //g:全局模式,应用所有字符串,匹配到第一个符合后继续匹配
3 var regExp2 = /abc/i;   //i:不区分大小写模式,匹配时忽略字符串大小写
4 var regExp3 = /abc/m; //m:多行模式,一行文本末尾时会继续查找下一行进行匹配(基本不用!)

⑧正则表达式中的特殊字符需要转义,如: ( [ { \ ^ $ | ) ? * + . ] }

1 var regExp1 = /[ab]c/i;    //匹配第一个“ac”或“bc”,不区分大小写
2 var regExp2 = /\[ab\]c/i;  //匹配第一个“[ab]c”,不区分大小写

⑨正则表达式中常见的匹配符。用\d匹配一个数字;用\w匹配一个字母或数字;用.表示任意字符,如“ab.”可以匹配“abc”、“ab1”、“ab!”等等;用*表示任意个字符(可以是0个);用+表示至少一个字符;用?表示0个或1个字符;用{n}表示n个字符;用{n,m}表示n-m个字符;用^表示行的开头,^\d表示必须以数字开头;用$表示结束,\d$表示必须以数字结尾。下面,举个栗子!

1 var regExp = /^([0-9a-zA-Z\_\.]+)@([0-9a-zA-Z\.]+)$/;
2 var email1 = "xu_123.home@qq.com";
3 var email2 = "xu123@qq.org";
4 regExp.test(email1);   // true
5 regExp.test(email2);   // true

⑩正则表达式配合split切割字符串

1 var str = "x,,u,c,h,,a,o,i";
2 str.split(/[\,]+/);    //["x","u","c","h","a","o","i"]

正则表达式其实还有很多知识点,这里就不一一介绍了。有兴趣可以再查阅资料深入去学习。下节将继续记录引用类型笔记 \(^o^)/~