首页 > 代码库 > JavaScript学习笔记【四】

JavaScript学习笔记【四】

JavaScript中的引用类型、Date类型和正则表达式RegExp

  一、Date类型、

    1.Date的构造函数、

      var now = new Date();   //默认now为系统的当前时间、

      var now = new Date(2007, 5, 3, 12, 21, 40);    //创建指定日期的now、构造函数的参数分别为年、月、日、时、分、秒、毫秒、

                              //2007年6月3日是12时21分40秒

      var now = Date.now();   //当前时间距离1970年1月1日零时(UTC时间)的毫秒数、

    2.Date的方法运用、

      var now = new Date();

      var year = now.getFullYear();   //得到当前日期的四位数的年份[2014]

      var month = now.getMonth();     //得到当前日期的月份、当前月份为11月份、而返回值为10(月份默认从0开始)、

      var date = now.getDate();       //得到当前月份中的日期、

      var day = now.getDay();          //得到当前时间是星期几、

      var hour = now.getHours();      //得到当前日期的小时、

      var minute = now.getMinutes();    //得到当前日期的分钟、

      var second = now.getSeconds();    //得到当前日期的秒数、     

      var millisecond = now.getMilliseconds();    //得到当前日期的毫秒数、

      以上每个方法都有一个对应的set方法和setUTC方法、

  二、RegExp正则表达式、

    1.字面量和构造函数、

      var pattern = /[ab]c/;    //通过字面量的方式构造一个正则表达式、

      var pattern = new RegExp(‘[ab]c‘);  //通过构造函数构造一个正则表达式 、使用构造函数式时、构造函数的参数必须是字符串、

      正则表达式的模式、

      (1)[g]表示全局模式、即模式将被应用于所有字符串、而非在发现第一个匹配项时立即停止、/[ab]c/g

      (2)[i]表示不区分大小写模式、在确定匹配项时、忽略模式和字符串的大小写、/[ab]c/i

      (3)[m]表示多行模式、即在达到一行文本的末尾时、还会查找下一行中是否存在与模式匹配的项、/[ab]c/m

      正则表达式的属性

      a.>global是否设置了g标志

      b.>ignoreCase是否设置了i标志

      c.>lastIndex开始搜索下一个字符串的起始位置、从0算起、

      d.>multiline是否设置了m标志、

      e.>source 正则表达式的字符串标识、使用字面量和构造函数创造的正则表达式的返回结果一致、

      【注】当需要匹配转移字符时、字面量和构造函数的写法是不一样的、

      var pattern = /\\/;匹配斜杠而使用构造函数就需要写成如下方式

      var pattern = new RegExp(‘\\\\‘);

      

      for(var i = 0; i < 10; i++) {

        var pattern = /cat/g;

        alert(pattern.test(‘I have a cat !‘));   //第一次返回true、第二次返回false、原因在于、使用字面量创建同一个正则表达式时实际上只创建了

        //一个RegExp实例、第一次执行后、找到了cat第二次的开始的索引位置变成了12

      }

      for(var i = 0;i < 10; i++) {

        var pattern = new RegExp(‘cat‘, ‘g‘);

        alert(pattern.test(‘I have a cat !‘));   //使用构造函数时每次都是创建一个新的RegExp实例、因此这里每次都返回true、

      }

      [ECMAScript 5]明确规定、使用正则表达式字面量必须要像使用RegExp构造函数一样、每次都必须新创建一个实例、

    2.exec和test方法、

      var pattern = /.at/;

      var match = pattern.exec(‘I have a cat !‘);   //exec方法接收一个字符串参数、该字符串即是与模式匹配的字符串、此处返回cat

      该方法是为捕获组设计的、返回包含第一个匹配项信息的数组、没有匹配项的情况下返回null、返回的数组虽然是Array的示例、但包含另外两个属性

      index和input

    3.构造函数的属性、

      input最近一次要匹配的字符串、(Opera未实现此属性)

      lastMatch最近一次的匹配项、(Opera未实现此属性)

      lastParen最近一次匹配的捕获数组、(Opera未实现此属性)

      leftContext       input字符串中lastMatch之前的文本、

      rightContext     input字符串lastMatch之后的文本、

      multiline布尔值、表示是否所有表达式都是用多行模式、(IE和Opera未实现此属性)、

    4.模式的局限性、

      和Perl语言相比、JavaScript的正则表达式还缺少一些高级正则表达式的特性、这里就不再一一赘述、因为在我们的使用当中、这些很少用到、

JavaScript学习笔记【四】