您现在的位置是:首页 > web开发 > JS 9

JS 9

web开发作者:dayu日期:5天前点击:1

2步: 1. 正则将原字符串分组

/(\d{4})(\d{2})(\d{2})/

// 1 2 3

2. 使用简单替换: str.replace(/正则/,"...$n...")

$n可自动获得第n个分组的子内容

n从1开始

切割: 将原字符串,按指定字符,分隔为多个子字符串

如何: var substrs=str.split(/正则/)

返回切割后的多个子字符串组成的数组

结果中,不再包含分隔符

固定套路: 将字符串打散成字符数组: var chars=str.split("")

3. ***RegExp:

什么是: 封装一条正则表达式, 提供了使用正则表达式进行查找和验证的API

何时: 1. 查询关键词的第四种情况: 即查内容,又查位置

2. 利用正则表达式执行验证

如何:

创建: 2种:

1. 如果正则表达式是固定不变的: var reg=/正则/ig;

强调: /正则/中正则中的/都要转义为\/

2. 如果正则表达式是动态生成的:

var reg=new RegExp("正则"[,"ig"]);

强调: "正则"中的" \ 都要转义为\" \\

比如: "\d{6}" => "\\d{6}"

1. ***RegExp:

2. Math

3. ***Date

1. ***RegExp

API:

验证: 检查字符串是否完全符合正则表达式的要求!

如何: var bool=reg.test(待检测字符串)

强调: 只要验证,reg中必须前加^后加$

查找关键词: 第四种情况: 即找内容,又找位置

如何: var arr=reg.exec(待查找的完整字符串)

在"待查找的完整字符串"中,依次查找每个符合reg要求得关键词。

返回值: 本次找到的一个关键词及其位置

arr[0]: 关键词内容

如果正则中有分组

arr[n]: 自动保存第n个分组匹配的子内容

arr["index"]: 当前关键词位置 -> 可简写为arr.index

如果没找到,返回null

每次查找后,都将reg.lastIndex属性(下次开始位置)修改为当前index+关键词长度,相当跳过当前关键词继续向后找

固定套路: 找所有关键词:

while((arr=reg.exec(str))!=null){

arr[0] 关键词内容

arr[n] 自动获得第n个分组的子内容

arr.index 当前关键词位置

}

如果只需要分组的子字符串,不需要完整关键词:

可省略arr,用RegExp.$n

while(reg.exec(str)!=null){

RegExp.$n 自动获得第n个分组的子内容

}

练习:

贪婪模式: 正则表达式默认匹配最长的符合条件的子字符串

默认使用贪婪模式

.* .+

懒惰模式: 仅匹配最短的符合条件的子字符串

贪婪->懒惰: .*? .+?

2. Math:

什么是: 专门封装数学计算所用常量,并提供数学计算所用API

何时: 只要数学计算时

特点: 不能new!

API:

1. 取整:

Math.ceil(num) 上取整: 只要超过,就取下一个整数

Math.floor(num) 下取整: 省略小数部分

Math.round(num) 四舍五入取整:

vs toFixed(d):

1. 小数位数: Math.round()只能取整,不能规定小数位数

toFixed(d)可取整,也可规定小数位数

2. 返回值: Math.round()返回number

toFixed(d)返回string

自定义round函数:

2. 乘方和开平方:

乘方: Math.pow(底数, 幂)

开平方: Math.sqrt(n)

3. 最大值和最小值:

Math.max(值1,值2,...);

Math.min(值1,值2,...);

问题: 不支持数组

解决: Math.max.apply(null,arr)

4. 随机数:

Math.random() 0<=r<1 随机小数

从min~max之间取随机整数:

Math.floor(Math.random()*(max-min+1)+min)

从0~n之间去随机:

Math.floor(Math.random()*(n+1));

3. ***Date

什么是: 封装一个时间,提供操作时间的API

何时: 只要存储时间,都要用Date对象

如何:

创建: 4种:

1. 创建日期对象,并自动获得当前客户端系统时间

var now=new Date();

2. 创建日期对象,并封装自定义时间:

var date=new Date("yyyy/MM/dd hh:mm:ss");

var date=new Date(yyyy,MM-1,dd,hh,mm,ss)

3. 复制一个日期对象:

问题: 日期对象的计算都是直接修改原日期对象

计算后无法保留计算前的旧时间

解决: 今后如果需要同时保留开始和结束时间时

都要先将开始时间复制一个副本,再用副本计算

var date1=new Date(...);

var date2=new Date(date1);

4. 用毫秒数创建日期对象:

Date对象的原理:

Date对象中保存了一个巨大的毫秒数

起始时间为: 1970年1月1日0点至今的毫秒数

var date=new Date(ms);

两个日期对象可相减: 得到毫秒差

JS 9

原文地址:http://www.cnblogs.com/Hale-Proh/p/7199638.html


下一篇       上一篇