Date类型和Regex类型

Date 类型

var now = new Date();

在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间

特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(即从UTC时间1970年1月1日午
夜起至该日期止经过的毫秒数)

Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数

要为2004年5月25日创建一个日期对象,可以使用下面的代码:

var someDate = new Date(Date.parse("May 25, 2004")); 

Date.parse()方法的字符串不能表示日期,那么它会返回NaN。实际上,如果直接将表
示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()。

换句话说,下面的代码与前面的例子是等价的:

var someDate = new Date("May 25, 2004"); 

这行代码将会得到与前面相同的日期对象

Data.now()
返回表示调用这个方法时的日期和时间的毫秒数

Date类型也重写了toLocaleString()、toString()和valueOf()

toLocaleString()、toString()

这两个方法在不同的浏览器中返回的日期和时间格式可谓大相径庭。

valueOf()方法,则根本不返回字符串,而是返回日期的毫秒表示

RegExp 类型

var expression = /pattern/ flags ;

g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;

? i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

? m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

所有元字符都必须转义。
正则表达式中的元字符包括:( [ { \ ^ $ | ) ? * + .]}

可以使用字面量定义的任何表达式,
可以使用构造函数来定义,

var pattern1 = /[bc]at/i; 

var pattern2 = new RegExp("[bc]at", "i"); 

RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。

? global:布尔值,表示是否设置了g标志。
? ignoreCase:布尔值,表示是否设置了i标志。
? lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
? multiline:布尔值,表示是否设置了m标志。
? source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

    var pattern1 = /\[bc\]at/i; 
    alert(pattern1.global); //false 
    alert(pattern1.ignoreCase); //true 
    alert(pattern1.multiline); //false 
    alert(pattern1.lastIndex); //0 
    alert(pattern1.source); //"\[bc\]at" 

RegExp对象的主要方法是exec(),

该方法是专门为捕获组而设计的。
exec()接受一个参数,即要应用模式的字符串,
然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。
返回的数组虽然是Array的实例,但包含两个额外的属性:index和input。
其中,index表示匹配项在字符串中的位置,
而input表示应用正则表达式的字符串。

在数组中,第一项是与整个模式匹配的字符串,
其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。
请看下面的例子。
var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);
console.log(matches.index); // 0
console.log(matches.input); // "mom and dad and baby"
console.log(matches[0]); // "mom and dad and baby"
console.log(matches[1]); // " and dad and baby"
console.log(matches[2]); // " and baby"

对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不
设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。而在设
置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项,如下面的例子所示。

var text = "cat, bat, sat, fat"; 
var pattern1 = /.at/; 
var matches = pattern1.exec(text); 
alert(matches.index); //0 
alert(matches[0]); //cat 
alert(pattern1.lastIndex); //0 
matches = pattern1.exec(text); 
alert(matches.index); //0 
alert(matches[0]); //cat 
alert(pattern1.lastIndex); //0 


var pattern2 = /.at/g; 
var matches = pattern2.exec(text); 
alert(matches.index);  //0 
alert(matches[0]); //cat 
alert(pattern2.lastIndex); //3 

matches = pattern2.exec(text); 
alert(matches.index); //5 
alert(matches[0]); //bat 
alert(pattern2.lastIndex); //8 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值