Date
定义
使用 Date 的构造函数
- 可以使用 Date.parse() 和 Date.UTC() 来作为参数传入 Date的构造函数中
- parse接受的是特定格式的日期字符串,不同的浏览器、不同的时区格式也不同,若字符串不能表示为日期则返回NaN
- UTC的参数是年、月、日、时等等类推,年月两个参数必须指定,其余不指定则默认为0。另外,参数月份是从0开始至11
var a = new Date();
var b = new Date(Date.parse("May 17,2020"));
var c = new Date(Date.UTC(2020,5,27,17,58,37));
console.log(a);//Sat Jun 27 2020 11:06:27 GMT 0800 (中国标准时间)
console.log(b);//Sun May 17 2020 00:00:00 GMT 0800 (中国标准时间)
console.log(c);//Sun Jun 28 2020 01:58:37 GMT 0800 (中国标准时间)
代码语言:javascript复制使用**Date.now()**来简化Date分析代码的时间
var a = Date.now();
setTimeout(()=>{
var b = Date.now();
console.log(b-a);//3001
},3000);
console.log(a);//1593228072462
继承的方法
toString() 和 toLocalString() 方法
他们会根据不同浏览器不同时区格式返回表示日期的字符串。
日期格式化
常用的几种方式,以实例记忆
- toDateString() 周几、年月日
- toTimeString() 时分秒、时区
- toLocaleDateString() 特定格式的年月日、周几
- toLocaleTimeString() 特定格式的时分秒
- toUTCString() 特定格式UTC日期
var a = new Date();
console.log(a.toDateString());//Sat Jun 27 2020
console.log(a.toTimeString());//11:36:51 GMT 0800 (中国标准时间)
console.log(a.toLocaleDateString());//2020/6/27
console.log(a.toLocaleTimeString());//上午11:38:36
console.log(a.toUTCString());//Sat, 27 Jun 2020 03:39:31 GMT
日期、时间常用方法
- getFullYear() setFullYear() 传入四位数
- getMonth() setMonth() 传入值大于0,超过11则增减年份
- getDate() setDate() 传入值1~31,超过则增加月份
- getHours() setHours() 传入0~23,超过增加天数
- getMinutes() setMinutes() 传入0~59,超过增加小时数
- getSeconds() setSeconds() 传入0~59,超过增加分钟数
代码语言:javascript复制编写一个倒计时
var a = new Date("2020/9/1 08:35:37");
var end = a.getTime();
function sumTime() {
var last = Date.now();
var days, dayRm, hours, hourRm, mins, minRm, secs;
days = (end-last)/(3600*1000*24);
dayRm = (end-last)%(3600*1000*24);
hours = dayRm/(3600*1000);
hourRm = dayRm%(3600*1000);
mins = hourRm/(60*1000);
minRm = hourRm%(60*1000);
secs = minRm/(1000);
console.log(parseInt(days) ' 天 ' parseInt(hours) ' 时 ' parseInt(mins) ' 分 ' parseInt(secs) ' 秒 ');
}
console.log('距开学还有n');
setInterval(()=> {
sumTime();
},1000);
RegExp
定义
正则表达式,可使用字面量也可以使用构造函数。不一样的是字面量始终是共享一个RegExp实例,而构造函数创建的每一个都是新实例,但是当重复进行相同的查找时就会出现问题,所以ES5之后规定,字面量模式也要像构造函数一样创建新的实例
/ pattern / flags
- pattern 又称为模式,包含字符类、限定符、分组、向前查找及反向应用
- flags 匹配模式
var reg = /great/g;
var regs = new RegExp("great","g");
紧跟表达式后的是匹配模式标志
- g -> global全局模式,应用于所有字符串
- i -> case-insensitive模式,忽略大小写
- m -> multiline 模式,搜完一行还会继续下一行
实例属性
- global ignoreCase multiline
这三个属性可以测试模式 pattern 是否是对应模式 例如pattern.global
- lastIndex
表示开始搜索的下一个匹配项字符位置,从0开始
常用模式的符号
元字符
- d 匹配数字,D 匹配非数字
- w 匹配字母、数字、汉字、下划线,W 前面的非情况
- s 匹配任意空白符,包括回车、制表、换行,W 匹配任意非空白符
- . 号匹配空白符以外的所有字符
- [] 匹配方括号中所有字符,[^] 前面的非情况
连接符
符号 -,在方括号中使用,指定范围,n~m,[n-m],一般指数字和字母的范围
限定符
规定指定的字符出现的次数
- 重复1或者更多次,* 重复0或者更多次,? 重复0或1次
- {n},重复 n 次,{n,} 重复 n 或者更多次,{n,m} 重复n到m次
定位符
- ^ 限定开始字符
- $ 限定结尾字符
- b 限定边界字符,规定边界以什么分割,比如空格,通常用来匹配单词
常用转义字符
$、(、)、*、 、.、[、]、?、、/、^、{、}、|
这一类字符不转义就会被当做各种限定、连接、定位符处理
分组符以及选择符
- (abc) 表示匹配整一个 abc
- [abc] 表示匹配a、b、c中的一个
- | 为选择符,表示或 (yes|no) yes或no
实例方法
exec()
代码语言:javascript复制接受一个参数,即要搜索匹配的字符串,该方法返回一个Array实例,该实例包括两个属性 index 和 input,index 表示匹配项在字符串中的位置,input 表示正则表达式应用到的字符串。
var reg = /. .(jpg|png|text)/g;
var result = reg.exec("great.png");
console.log(result.index);//0
console.log(result[0])//great.png
console.log(result.lastIndex);//undefined
test()
代码语言:javascript复制接受一个字符串参数,模式与其匹配返回 true,否则为 false
var reg = /. .(jpg|png|text)/g;
var result = reg.test("great.png");
console.log(result);//true
RegExp的属性
opera不支持 input,lastMatch,lastParen,multiline Internet Explorer不支持multiline
编写常用的手机号、邮箱号的筛选
代码语言:javascript复制var phone = /1[0-9]{10}/g
console.log(phone.test("13638707775"));//true
console.log(phone.test("23638707775"));//false
console.log(phone.test("1363870"));//false
var email = /[a-zA-Z0-9_] @[0-9a-zA-Z] .(com|net)/g //邮箱登录名支持字母、数字、下划线
console.log(email.test("grea_12tiga@126.com"));//true
console.log(email.test("app@123.net"));//true
console.log(email.test("app%@123.net"));//false
console.log(email.test("app@123.54"));//false