首页 > 代码库 > 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学习笔记【四】