API:
查找关键词:4种:
1.查找固定关键词的位置:
var i=str.indexOf("关键词",fromi);
var i=str.lastIndexOf("关键词",fromi);
问题:不支持正则
2.判断有没有包含和正则匹配的关键词:
var i=str.search(reg);
问题:永远从0位置开始,始终只能找第一个
3.获得所有关键词内容:
var kwords=str.match(reg); //加g
问题:无法获得每个关键词的位置
4.即找每个关键词的内容,又找位置。
var arr=reg.exec(str);
在str中找下*一个*关键词的内容和位置,保存在数组arr中。
补:reg对象的lastIndex属性:
表示下次从lastIndex位置开始匹配
默认为0
原理:
1.用reg去str中匹配一个关键词
2.将本次找到的关键词内容,放在arr的第一个元素中,同时将关键词的位置,记录在arr.index属性中。
3.自动将reg的lastIndex属性调整为当前位置之后。
返回值:
如果找到:同match不加g时
arr[0]->本次找到的完整关键词
如果正则中有分组:
arr[1]->获得第1个分组的子内容
arr.index->本次关键词的位置
没找到:返回null
如何使用: 用循环,反复调用exec,直到返回null为止。
正则:
贪婪模式:默认匹配尽量长的符合规则的字字符串。
懒惰模式:让正则仅匹配最短的符合规则的字符串。
贪婪改懒惰: .*? .+?
验证格式:
var bool=reg.test(str);
验证str是否满足reg的格式要求。
满足,返回true,不满足返回false
强调: 一般验证都是要从头到尾完整匹配
都要前加^,后加$。
2. Math:专门封装数学计算所用的API或常量
何时使用:只要执行数学计算
创建: Math不能new!
API:所有API都用Math直接调用
1. 取整:
1. 上取整: 只要小数点超过,就取下一个整数
num=Math.ceil(num)
2. 下取整: 舍弃小数部分
num=Math.floor(num);只能对纯数字下取整
vs parseInt(str):
转换为number
去掉结尾的非数字字符
舍弃小数部分
3. 四舍五入取整:
num=Math.round(num);
强调:只能取整,不能设定小数位数
vs n.toFixed(d)
参数:round无法指定小数位置,只能取整
toFixed(d)可指定小数位数,可按任意小数位数四舍五入。
返回值: round返回num,可直接参与算术计算。
toFixed(d)返回str,参与+法计算时,要提前类型转化。
强调:小心舍入误差:
2. 乘方和开平方:
Math.pow(底数,幂)
Math.sqrt(num) 开平方
Math
最大值和最小值:
Math.max(值1,值2,...)
Math.min(值1,值2,...)
强调: max和min不支持数组类型的参数
无法获得数组中的最大值
解决:Math.max.apply(null,arr);
获取arr数组中的最大值
随机数:
Math.random(): 0<=r<1
公式:从任意min~max之间去一个随机整数
parseInt(Math.random()*(max-min+1)+min)
如果从0~max之间
parseInt(Math.random()*(max+1))
2.Date:
什么是:封装一个时间
提供操作时间的API
何时使用: 只要保存时间或日期,以及对时间进行操作时。
创建: 3种:
1. 创建日期对象,保存当前时间:
var now=new Date();
强调:now封装的是客户端本地时间。
2. 创建日期对象,保存自定义时间:2种
var date=
new Date("yyyy/MM/dd hh:mm:ss");
var date=
new Date(yyyy,MM-1,dd,hh,mm,ss);
说明:1. 如果不关心时分秒,可省略
2. 如果使用数字设置时间,月份要-1
3. 复制日期对象:
为什么?因为日期的计算,都是直接修改原日期对象。
何时复制: 如果希望同时保留开始时间和截止时间时,都要先复制,再计算。
如何复制:
var date1=new Date();
var date2=new Date(date1.getTime());
说明,.getTime()可省略
原理: 日期对象中保存的其实是一个巨大的毫秒数。是1970年1月1日0点至今的毫秒数。
API:
分量:FullYear Month Date Day
Hours Minutes Seconds Milliseconds
1.每个分量都有一对儿getXXX/setXXX方法
其中,getXXX方法负责获取指定分量的值
setXXX方法负责修改指定分量的值
例外:星期Day没有setDay方法
2.命名: 年月日星期,没有s结尾
时分秒毫秒,都有s结尾
3.取值范围(返回值):
只有月中的日Date 从1~31结束
其余都是从0~进制-1结束
*Month: 0~11 需要修正: 计算机中的月份,比现实中的月份少1
Date: 1~31 不用修正
Day: 0~6 不用修正: 星期日是第一天0
Hours: 0~23 不用修正
Minutes/Seconds: 0~59 不用修改
日期计算:
1. 两个日期对象可相减:得到毫秒差
2. 对任意分量做加减:3步:
1.取分量: var n=date.getXXX();
2.做加减: n+=x;
3.放回去: date.setXXX(n);
说明:1. setXXX方法可自动调整时间
2. setXXX方法直接修改原日期
简版公式:date.setXXX(date.getXXX()+n)
日期转字符串:
date.toGMTString();转为中国标准时间格式
date.toLocaleString();转为当地时间格式
date.toLocaleDateString();仅保留日期
date.toLocaleTimeString();仅保留时间