七. 正则表达式(Regular Expression)
为了帮助计算机认识我们输入的语言,人们设置了一定的规则,即正则,来完成我们需要的一些操作
定义正则
var re = new RegExp("a","ig");//参数为我们制定的规则,检索条件
var re = /a/ig; //简写方法,推荐使用,性能更好
注:字面量正则表达式用创建对象来表示,需要将转义字符再转义,生成模式字符串才可以解析执行
常用方法
-
test():在字符串中查找符合正则的内容,若查找到返回为true,反之false
正则.test(字符串)
-
search():在字符串中搜索符合的内容,搜索到返回出现的位置(不是一个字母,会返回第一个字母位置),失败返回-1
字符串.search(正则)
-
match():在字符串中搜索符合字符串内容,成功返回内容,格式为数组,失败为null,也会返回自己的子项
字符串.match(正则)
-
replace():替换对应字符串,并返回替换后的内容
字符串.replace(正则,新的字符串/回调函数(回调函数,第一个参数时每次匹配成功的字符))
-
exec():与match方法相同
正则.exec(字符串)
转义字符(元字符{[(|*+.$?]})
- \n:回车换行
- \b:匹配单词的开头和结尾
- .:匹配任意字符
- .:真正的点
- \s:空格
- \S:非空格
- \d:数字
- \D:非数字
- \w:字符(字母、数字、下划线)
- \W:非字符
- \b:独立的部分(起始、空格、结束)
- \B:非独立的部分
- .:匹配除换行符任意字符
- ^:匹配字符串开始在[]里表示排除
- $:匹配字符串结束的字符,和前面的字符匹配
在构造函数中,转义字符都要在进行转义,即双重转义,是由于函数中参数为字符串形式
分组字符
- ():分组符,就相当于数学里面的括号
var str = '1014-23-22';
var re = /\d-+/g; //全局匹配数字、横杠,横杠至少为1 4- 3-
var re = /(\d-)+/g; //全局匹配数字、横杠,数字和横杠至少为1 4-3-
-
[]:表示某个集合中的任意一个,[abc]整体代表一个字符,匹配a,b,c,中的任意一个
-
{}:代表出现的次数
- {n,m}:n表示至少n次,最多m次
- {n,}:至少n次
- {n}:最好n次
检索条件
- i:不区分大小写
- g:全局匹配
- m:多行匹配
- u:不重复匹配
- x:忽略空白方法
- A:从开头开始匹配
量词
- *:通配符(任意次) {0,}
- +:1次或多次 {1,}
- ?:0次或1次,{0,1}
参考网址 实例讲解正则表达式的使用
八. Date对象,window对象
Date对象(引用类型,使用UTC,国际协调时间)
-
创建对象,用于处理日期和时间,确保到1970年1月1日到之后1亿年
var myDate = new Date(); //自动保存当前的值
对象中传参表示特定的日期时,必须传入表示该日期的毫秒数,有两种方法可以简化计算过程,
Date.parse()
和Date.UTC()
-
Date.parse()
:传入字符串格式因地区而异,不能表示日期,则返回NaN.就算在Date构造函数中不使用该方法,也会在后台调用var myDate = new Date(Date.parse("may 25,2004")) var myDate1 = new Date("may 25,2004"); //两个创造对象是等价的
-
Date.UTC()
:在构建时与上述方法不同,使用不同的信息,方法中传入的参数分别是年份、基于0的月份(一月时0),月中的哪一天(1-31),小时数(0-23)、分钟、秒以及毫秒,年月必要,天默认为1,其余为0var myDate = new Date(Date.UTC(2000,9,3));//表示GMT时间2000年10月3日零时 var myDate = new Date(2000,9,3); //日期和时间基于本地时区
-
ES5中新增
Date.now()
:返回调用该方法时的时间,在不支持的浏览器中用+操作符获取Date对象时间戳
-
-
Date属性
constructor:返回对创建此对象的 Date 函数的引用。
prototype:使您有能力向对象添加属性和方法。
-Date方法
var myDate = new Date();
/*日期、时间组件方法*/
myDate.getDate() //从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() //从 Date 对象返回一周中的某一天
getMonth() //从 Date 对象返回月份 (0 ~ 11)。
getFullYear() //从 Date 对象以四位数字返回年份。
getYear() //请使用 getFullYear() 方法代替。
getHours() //返回 Date 对象的小时 (0 ~ 23)。
getMinutes() //返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() //返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() //返回 Date 对象的毫秒(0 ~ 999)。
getTime() //返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset()// 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() //根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() //根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() //根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() //根据世界时从 Date 对象返回四位数的年份。
getUTCHours() //根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes()// 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() //根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() //根据世界时返回 Date 对象的毫秒(0 ~ 999)。
setDate() //设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() //设置 Date 对象中月份 (0 ~ 11)。
setFullYear() //设置 Date 对象中的年份(四位数字)。
setYear() //请使用 setFullYear() 方法代替。
setHours() //设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() //设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() //设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() //设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() //以毫秒设置 Date 对象。
setUTCDate() //根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() //根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() //根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() //根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes()//根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() //根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() //根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
/*日期格式化*/
toSource() //返回该对象的源代码。
toString() //把 Date 对象转换为字符串。
toTimeString() //把 Date 对象的时间部分转换为字符串。
toDateString() //把 Date 对象的日期部分转换为字符串。
toGMTString() //请使用 toUTCString() 方法代替。
toUTCString() //根据世界时,把 Date 对象转换为字符串。
toLocaleString() //根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() //根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() //根据本地时间格式,把 Date 对象的日期部分转换为字符串。
valueOf() //返回 Date 对象的原始值。毫秒数
window对象(BOM的核心)
既是JS访问浏览器窗口的接口,又是ECMAScript的Global对象,在网页中定义的任何对象、变量和函数,都以window作为全局对象
var age = 29;
function sayage(){
alert(this.age); // this指向window
}
alert(window.age); // 29
sayage(); //29
window.sayage(); //29
全局作用域
-
全局变量不能通过delete操作符删除,而直接在window上定义的可以
var age = 29; window.color = red; delete window.age; //IE9之前出错,其余返回false delete window.color; //IE9之前出错,其余返回true alert(window.age); // 29 alert(window.color); //undefined
-
全局变量不能访问未声明的变量,会抛出错误,但通过window查询可判断变量是否存在
窗口关系及框架
- 若窗口中有框架,则每个框架都有自己的window对象,并保存在frames集合中
九. JavaScript本地对象、内置对象、宿主对象和自定义对象
本地对象/原生对象
定义:独立于宿主对象的ECMAScript实现提供的对象 ,所定义的类(引用类型)
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服务器方面的对象)、Enumerator(集合遍历类)、Global、Math
内置对象(不需要new的对象)
定义:由ECMAScript实现提供的对象,独立于宿主环境,在一个脚本执行程序的初始化创建,不必创建实例
Global、Math(每个内置对象都是原生对象)
宿主对象/浏览器对象
定义:执行JS脚本的环境提供的对象,对于嵌入到网页的JS来说,就是指浏览器提供的对象,不同浏览器提供的宿主对象可能不同,会有兼容问题
Window、Document、Element、form、image等,所有BOM和DOM
自定义对象
定义:开发人员自己定义的对象,使JS应用及功能得到扩充