




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Javascript高级编程Day1大纲:1.Js基础2.事件编程3.Dom操作4.BOM模型5.面向对象6.正则表达式7.贪食蛇一、 简介1、 什么是javascriptJavaScript 是网景(Netscape)公司开发的一种基于客户端浏览器、面向(基于)对象、事件驱动式的网页脚本语言。2、 为什么要使用javascript表单验证网页特效小游戏Ajax3、 快速入门在程序中,如果想编写js代码,有两种办法:1) 在html文件中,在一对script标记中,直接编写document.write(hello);2) 在js中,直接编写,在html中,使用一对script标记直接引用以上两种不能在一对script标记中重复使用2、 基础语法1、 基本格式JavaScript区分大小写 变量a和变量A是两个变量JavaScript脚本程序须嵌入在HTML文件中JavaScript脚本程序中不能包含HTML标记代码 document.write();每行写一条脚本语句语句末尾可以加分号JavaScript脚本程序可以独立保存为一个外部文件2、 关于script标签 Language:引用的语言 javascript、php、c#、VBSCRIPTSrc:引用一个外部的js文件3、 关于变量变量是用来临时存储数值的容器,变量存储的数值是可以变化的变量必须要先声明才能使用,使用var声明变量使用var声明:局部变量没有使用var声明:全局变量变量的命名规则:第一个字符必须是英文字母,或者是下划线(_);其后的字符,可以是英文字母,数字,下划线;变量名不能是JavaScript的保留字变量的作用域:全局变量、局部变量4、 数据类型String :字符串 “”Number :数字 10、10.01、100Boolean :布尔型 true、falseUndefined :未定义Null :空Object :对象5、运算符算术运算符 +、-、*、/、%、+、- i+ +i比较运算符、=、=、!=、=、=、!=和=有何区别?= :判断值是否相等=:判断值相等类型也相同逻辑运算符 &、|、!赋值运算符 =、+=、-=、*=、/=、%= 将运算符左边的与右边的进行计算,再赋值给左边的字符串运算符 +、+=3、 流程结构顺序结构分支结构循环结构1、 顺序结构代码是一行接着一行执行2、 分支结构If、else、else if、switch3、 循环结构For、while、do.while、for.in小游戏:猜数游戏:进入到页面之后、随机一个数1-500、弹出输入框,由用户输入一个数字,如果这个数字大于随机数,提示:大了,反之提示,小了。如果相等,提示:猜对了,然后程序结束4、 函数1、 函数的功能代码重复性使用模块化编程2、 语法:使用函数前要先定义才能调用函数定义有三个部分:函数名,参数列表,函数体定义函数的格式function 函数名(参数1,参数2.) 函数执行部分; return 表达式;调用语法: 函数名(实参1,实参2,.,);3、 代码示例例1:关于函数的定义和调用例2:关于函数的参数问题在上题中,first,second是形参,i,j是实体在函数执行过程,形参值的改变不会影响实参按值传递按地址传递原理图:在js中,对象类型默认就是按地址传递例3:关于函数的返回值问题例4:关于匿名函数Var i=10; 变量可以保存数据,也可以保存地址Function display() 在window对象下添加一个叫display的变量,它指向了这个函数的首地址Window.i=display 我们让window对象下的i指向这个函数的首地址display() = i();例5:自调用匿名函数Function() :相当于返回首地址(Function() :把这部分看做一个整体(function()():相当于找到这个地址并执行以上这种写法:可以避免代码库中的函数有重命问题,并且以上代码只会在运行时执行一次,一般用做初始化工作。例6:全局变量与局部变量在函数内部定义的就是局部的,否则就是全局的如果函数内的变量没有var声明会直接影响全局的为什么没有var是全局的?是因为,在js中,如果某个变量没有var声明,会自动到上一层作用域中去找这个变量的声明语句,如果找到,就使用,如果没有找到,继续向上查找,一直查找到全局作用域为止,如果全局中仍然没有这个变量的声明语句,那么会自动在全局作用域进行声明,这个就是js中的作用域链代码示例:局部访问全局使用作用域链全局访问局部可以使用闭包进行模拟5、 arugments的使用在一个函数内部,可以使用arguments属性,它表示函数的的形参列表,它是以数组形式体现的例1:在定义display函数时,它的实参个数必须要与形参个数保持一致,有时,我们定义函数时,形参数目不能固定,如何解决?例2:如果定义时,参数个数不确定,可以通过arguments来保存所有实参例3:使用js函数来计算每个公司的员工工资总额6、 javascript中的词法分析Js中的script是分段执行的例1:在之前script语句段定义的变量和函数可以在其它script语句段使用。例2:在一个js程序中,可以有多个script语句段,那么它们如何工作?1、读入第一个代码段2、编译 声明变量、声明函数、语法检查、语义检查、代码优化、分析并得到代码树. Var i=10; Var i;3、 执行 i=10;4、读入下一个代码段5、编译6、执行7、8、结束首先,对上面这个script语句段进行编译,这时已经声明了变量i,这时它是undefind例3:js中的错误类型编译错误 :是指在编译时发生的错误,如:语法错误 运行错误 :是指在运行时发生的错误无论是哪种错误,当前代码段中的后面的代码都不执行编译时,如果发生错误,那么当前代码会停止执行,而执行后面代码段的内容运行时,如果发生错误,但前面的代码已经执行完毕,所以不会影响前面的内容无论是哪种错误,不会影响后面的代码的执行编译错误和运行错误出现时,对各自代码段的影响Script 执行流程图:Day21、 数组1、 什么是数组数组就是一组数据的集合其表现形式就是内存中的一段连续的内存地址数组名称其实就是连续内存地址的首地址2、 关于js中的数组定义数组定义时无需指定数据类型数组定义时可以无需指定数组长度数组可以存储任何数据类型的数据创建数组的语法:var arr=值1,值2,值3;/隐式创建var arr=new Array(值1,值2,值3);/直接实例化var array=new Array(size);/创建数组并指定长度3、 关于数组长度数组对象.length在js中,每一个数组对象都可以调用length属性,它表示数组对象下共有几个数组元素示例:4、 for.in语句在js中,数组不是数据类型,数组的数据类型其实就是对象Js中的For.in语句可以实现对一个对象的所有属性的遍历也可以使用for.in语句实现对一个数组的所有元素的遍历语法:for( var i in array )数组中有几个元素,for.in语句就循环执行多少次每次执行时,将当前数组元素的下标存放到变量i中5、 文本下标格式:arrkey例1:创建带有文本下标的数组例2:在js中,文本下标的数组元素,不计入数组长度上题输出结果为:3通过观察,后添加的first和second是以属性形式添加到数组对象中的例3:数组对象可以能过”.”来引用文本下标的数组元素例4:如何遍历带有文本下标的数组元素因为js中,文本下标不计入长度,所以不仍赖length属性来进行遍历文本下标的数组必须通过for.in语句进行遍历文本下标的数组元素不计入数组长度需要使用for.in语句进行遍历可以使用对象名.调用文本下标元素6、 关于多维数组7、 案例:代码见:demo06.html2、 事件编程l 事件处理程序l 常用事件l 绑定事件方式l 事件冒泡l 默认行为l 事件对象示例1、 事件处理程序例1:点击按钮,弹出一个消息框例2:点击按钮,弹出一百个消息框在以上程序中,函数display就是按钮点击事件的事件处理程序2、 常用事件onLoad:页面加载完毕后 一般用于body元素onUnload:页面关闭后一般用于body元素onBlur:失去焦点onFocus:获得焦点onClick:点击onMouseOver:当鼠标经过时onMouseOut:当鼠标离开时onMouseDown:当鼠标按下时onMouseUp:当鼠标抬起时onMouseMove:当鼠标移动时onChange:当内容改变时onSelect:当内容被选中时onkeypress:当键盘点击时onkeydown:当键盘按下时onkeyup :当键盘抬起时触发顺序:onkeydown、onkeypress、onkeyupOnkeypress事件无法捕获功能键 代码见:demo08.htmlonSubmit:当表单提交时onReset:当表单重置时3、 绑定事件方式1) 行内绑定语法:2) 动态绑定结构+样式+行为分离的页面语法:对象.事件=事件处理程序行内绑定和动态绑定的重要区别:以上程序是不可用的,点击div时,执行test函数,这时,test中的this表示window对象因为:我们定义test函数,实际上相应于在window对象下定义了test属性test();相当于 window.test();所以test函数在执行时,里面的this指向window“谁”调用了函数,this指向“谁”以上程序是可用的,对象.onclick 在执行test函数时,test函数指向div1元素3) 事件监听我们能不能为一个dom对象的同一个事件指定多个事件处理程序例1:通过这题,我们发现,如果为一个对象的同一个事件指定多个事件处理程序,那么,后面指定的程序会覆盖前面的。Var i=10;i=20;Alert(i);如果我们想为一个对象的某个事件指定多个事件处理,可以考虑使用事件监听。事件监听语法:IE:attachEvent(type,callback)type:事件名 如:onclick、onsubmit、onchange等callback:事件处理程序基于W3C模型:addEventListener(type,callback,capture)Type:事件名 ,没有“on”前缀 如:click、submit、changeCallback:事件处理程序Capture:事件模型 (可选参数) (冒泡模型、捕捉模型) true:捕捉模型 false:冒泡模型 (默认值)代码示例:IE:W3c:总结:IE和W3C事件监听的不同:监听方法不同:IE attachEvent 、W3C addEventListener监听参数不同:IE 没有模型参数、W3C 有模型参数触发顺序:IE 8及以下的浏览器触发时是先绑定、后触发W3C浏览器是先绑定、先触发事件名称不同:IE 事件需要”on”前缀,W3C不需要on前缀解决事件监听的兼容性问题:通过script引用上面的js文件,可以使用下面代码进行调用:4、 事件模型事件模型分为两种:1) 冒泡模型2) 捕捉模型目前,IE只支持冒泡模型5、 冒泡模型事件冒泡是指事件响应时会上水冒一样上升至最顶级元素click代码示例:大多数情况下,程序需要对事件冒泡进行取消如何取消事件冒泡:IE:window.event.cancelBubble=true;W3C:function(event)event.stopPropagation();解决兼容性问题:public.js代码: 包含以上js文件,执行以下代码6、 默认行为有些html元素,有自己的行为,如,提交按钮、超链接有些时候,我们需要对默认行为进行取消,如表单按钮点击时,用户资料添写不完整,我们这时需要将按钮的默认行为取消。代码示例:解决兼容性:7、 事件对象1)什么是事件对象事件对象就是事件发生时系统自动产生的对象,这个对象包含了这个事件发生时所有的信息如:鼠标移动,那么,鼠标所在的横、纵坐标就保存到了这个事件对象中2) 如何获得事件对象IE9及以上版本、W3C:function(event)IE8及以下:window.event3) 键盘事件小例子:代码见:demo17.html3、 BOM模型1、BOM:浏览器对象模型当我们使用浏览器打开一个网页程序时,那么,js系统会自动创建对象,首先创建浏览器对象window,然后再为window对象创建它的子级对象,最后形成一个树状模型,这个就是BOM模型从上图可以看出,window对象是所有对象的最顶级对象也就是说,以前,我们写的 document.write() 实际上 window.document.write()我们创建的所有全局变量和全局函数都是存储到window对象下的2、 window对象 浏览器对象alert(message)消息框confirm(message) 确认框 如果点击确定,返回true,否则返回falseprompt(message,defstr) 输入框 返回值为用户输入的数据open(url,name,features) 打开新窗口close()关闭窗口blur()失去焦点focus()获得焦点print()打印moveBy(x,y)相对移动moveTo(x,y)绝对移动resizeBy(x,y)相对改变窗口尺寸resizeTo(x,y) 绝对改变窗口尺寸scrollBy(x,y)相对滚动scrollTo(x,y)绝对滚动setTimeout(表达式,毫秒)设置定时器 执行一次setInterval(表达式,毫秒)设置定时器 反复执行clearTimeout(定时器对象)清除定时器3、 navigator 浏览器信息对象appCodeName :内部代码appName:浏览器名称appVersion:版本号platform:操作系统onLine:是否在线cookieEnabled:是否支持cookie4、 location 地址栏对象host:主机名port:端口号href:完整的url信息pathname:路径地址protocol:协议search:查询字符串assign(url):用于页面跳转5、screen屏幕信息对象availHeight可用高度availWidth可用宽度colorDepth颜色质量height高度width宽度6、 document文档对象linkColor超链接颜色alinkColor作用中的超链接颜色vlinkColor作用后的超链接颜色bgColor背景颜色fgColor字体颜色title文档标题getElementById(“id”)通过id属性值获取某个元素getElementsByName(“name”)通过name属性值获取某些元素getElementsByTagName(“tagname”)通过标签名获取某些元素7、 学习以上对象例1:navigator例2:screen对象例3:location对象例4:document对象四、定时器的使用:1、 定时器又称为延迟器,会在某个时间以后执行指定的代码语法:Var timer=setTimeout(表达式,毫秒);表现在指定的毫秒数后执行前面的表达式例1:页面载入后,立即弹出消息框代码执行到第12行时,立即弹出例2:页面载入后,三秒后再弹出消息框例3:页面载入后,三秒后弹出一个消息框例4:每过三秒弹出一次消息框例5:学入分析setTimeout是如何执行的分析setTimeout是停留在当前行还是继续执行?经过上题分析,发现,先弹出“first”,说明定时器在执行时,没有停留,而是加载这行代码之后立即再去执行后面语句当程序执行setTimeout方法时,会向系统内存中抛出一个定时器对象,然后当指定时间到达之后,这个定时器对象会自动执行指定语句,然后对象消失例6:如果需要反复执行某一个程序,还可以使用setInterval经过测试,我们发现,setInterval会反复执行,setTimeout只执行一次setTimeout语句执行时,会被反复编译setInterval语句执行时,只会编译一次例7:清除定时器动画执行时,如果想关闭动画的执行,可以调用clearTimeout来清除定时器对象Var timer=setTimeout();clearTimeout(timer);作业:在页面中,放一个文本框,点击开始按钮,在文本框中显示当前系统时间,如果想停止,可以点击停止按钮,文本内容停止走动在页面中,放一个div,让div从窗口左上角浮动至右下角Day3JS面向对象1、 简介1、 发展史面向机器面向过程将程序的执行分解成若干个步骤面向对象将程序的执行分解成若干个事物2、 面向对象两个基本概念类:代表某类事物,是抽象的对象:代表某个事物,是具体的3、 快速入门表达一个人的完整信息示例1:在上题中,我们分别使用了三个变量来定义一个人的完整信息,但这三个变量它们之间没有必然的联系,如:我现在找到变量age,虽然可以取到数据,但并不清楚这是“谁”的年龄示例2:使用面向对象来表达这个人信息2、 类的种类1、 系统类2、自定义类关于几个常用系统类1) String类字符串类length :取得字符串长度indexOf(string) :取得参数在字符串中出现的位置substr(num1,num2) :截取字符串toLowerCase() :转换为小写toUpperCase() :转换为大写replace(str1,str2) :字符串替换2) Date类 日期类getYear():返回年份getFullYear():返回年份 getMonth():返回月份 (0-11)getDate() :返回每月第几天getDay():返回星期数 (0-6)getHours():返回小时数getMinutes():返回分钟数getSeconds() :返回秒数getMilliseconds() :返回毫秒数3) Math类 数学类ceil(数值):返回大于或等于该数的最小整数floor(数值):返回小于或等于该数的最大整数min(数值1,数值2) :返回最小数max(数值1,数值2) :返回最大数pow(数值1,数值2) :返回数值1的数值2次数random() :返回随机数 0-1round(数值):四舍五入sqrt(数值) :开平方根Math类下的方法都是静态方法 3、 自定义类的使用1、 类的定义语法:function 类名()在js中,没有类的定义语句,只有function,每一个function,我们可以认为它是同名类的构造函数Function person - 它是Person类的构造函数这种函数也叫构造器2、 声明对象语法:var 对象=new 类名();开辟相应内存空间执行上题,我们发现,在实例化时,直接执行了Person构造函数3、 关于对象属性的使用语法:对象.属性;对象属性;在js中,对象属性是动态添加的,对象属性可以使用“.”或这两种形式表示出来对象的属性可以是任何数据类型,如:字符串、数字、对象window.document.write();window.navigator.appCodeName4、 重点说明在js中,一切都是对象var num = 10;/Numbervar str =hello;/Stringvar flag = true;/Booleanvar per = new Person();三个常用关键字:constructor: 返回的是对象的构造器typeof :返回数据类型instanceof :判断对象是否是某个类的实例4、 对象在内存中的表现形式1、 如果创建第二个对象,会拥有name和age属性吗?创建p1对象时,会为p1开辟相应的堆空间,然后将name和age属性以及值添加到p1所指向的堆空间中,创建p2对象时,也会为p2对象开辟对应的空间,但p2所指向的堆空间是空的,所以P2对象没有name和age属性2、 如果创建第二个对象p2,使用p1为p2赋值会怎样?Var p2=p1;将p1栈中保存的堆的地址赋值给了p2,所以说,p2也指向了p1指向的堆内存的地址两个对象指向了同一块堆内存,所以改变一个对象的属性,会影响到另一个对象Js中的数据类型值类型引用类型3、如果删除了p2对象,是否会影响到p1对象p2 = null;P2=null; 表示释放p2所占的栈空间,但p1的空间仍保留,p1仍然指向相应的堆空间,所以删除p2不会影响到p1对象。5、 this的使用在js中,this表示当前对象,“谁”调用了当前函数,“this”就指向了“谁”1、 问题在上面的例题中,我们创建的对象中的属性是动态添加的,如果我们想在创建对象的同时,自动拥有某些属性或方法,该如何实现?我们的习惯:在相同的类下创建的对象需要有相同的属性和方法语法:Function 类()this.属性=值;2、 示例例1:在构造器中,使用this为当前对象添加name和age属性创建的这两个对象,它们的属性是一样的,但值也是相同的例2:构造函数传参在构造器中定义形参,实例化对象时,通过构造函数传参传递数据3、 this的深入理解函数是由对象调起来的,在函数中的this就指向了这个对象在js中,如何判断一个函数是以面向过程调用还是以面向对象形式来调用?所有函数都是面向对象调用,普通函数的调用是由window对象调用的上题中,this指向p1在js中,每个页面里也有一个this,这个this指向“谁”例:Day4JS面向对象1、 Object类1、 在Js中,Object是所有类的基类,使用Object类来创建自定义对象时,可以无需定义构造函数constructorprototypehasOwnProperty(property)2、 快速入门使用Object避免了对构造器的定义3、 为什么Object是所有类的父类因为所有类在被系统加载之后,那么会创建这个类的原型对象,如何创建?类名.prototype=new Object();Object类下的所有属性和方法会被这个原型对象所拥有4、 我想判断当前对象下是否拥有某个属性?其实,我们之前使用的json对象就是Object类的实例2、 静态属性在有些面向对象的语言中,可以使用static关键字定义类的静态属性或方法,这一点,在JavaScript可以进行模拟。1、语法:类名.属性名类名.属性=function()2、 代码示例:改进上题,创建对象时可以自动计数运行结果:3、 函数闭包1、 什么是闭包所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。2、 闭包功能在全局中,不能访问局部变量i,因为作用域不同,另外,display函数在执行完毕后,局部变量i会被回收。功能:1) 访问局部变量2) 使变量所占的内存不被释放3、 代码实现:例1:变量是可以指向函数的首地址的,函数也可以返回另一个函数的首地址例2:使用一个局部函数包含变量i,这样局部变量i的内存不会被回收4、 原理:例3:因为i的内存永远不会回收,所以每次调用fn2,i的值会+14、 私有属性在面向对象思想中,对于有些敏感的,不想公开的成员可以定义为私有的,在JavaScript中可以模拟这个功能。1、语法:function Person(p_name)var name = p_name;this.agevar :私有this :公有在js中,没有受保护成员2、 代码示例:例1:在上题中,我们想用var来表示私有成员属性,但Person构造函数执行完毕后,age会被回收,不能当做成员属性来使用。该如何解决?例2:this.setAge和this.getAge两个方法使用到了局部变量age,所以age不会被回收如果只有set方法,说明该属性是只写属性如果只有get方法,说明该属性是只读属性5、 call、apply的使用1、使用指定的对象调用当前函数语法:call(thisObj,arg1,arg2,argN)第一个参数:函数执行时,this指向谁后面的参数:根据需要顺序指定apply(thisObj,argArray) 第一个参数:函数执行时,this指向谁第二个参数:数组,表示参数集合在js中,函数有几种调用形式:Person();/this-windowvar p1=new Person();/this-p1per.Person();/this-perJs中内部的this会随着程序运行指向不同的对象,那么,我们能不能手动修改这个this的指向?答:call、apply2、 代码示例:例1:例2:call和apply在执行时做了两件事:1) 将函数内部this指向了第一个参数2) 调用函数另外:以可以这样解决问题:P1.say=speak;P1.say();这样解决和上面解决方法有本质上的区别:上面的解决办法是直接调用speak函数,只不过函数内部this的指向发生改变下面的解决办法会为p1对象增加属性,p1对象的“体积”会变大3、 案例:6、 继承的实现在有些面向对象语言中,可以使用一个类(子类)继承另一个类(父类),子类可以拥有父类的属性和方法,这个功能可以在js中进行模拟1、 扩展Object方法语法:Ototype.ext=function(parObject)for(var i in parObject)thisi=parObjecti;代码:2、 使用call、apply方法语法:父类构造器.call(this,.);3、 原型继承语法:子类.prototype=new 父类();代码:上题原理:7、 贪食蛇1、 固定范围地图:宽:800px高:400px横向:40个格纵向:20个格每个单元格:20px*20px2、 分析这里面用到的事物1) 蛇2) 食物3) 地图3、 基本概念地图和食物使用一个div表示由于蛇会移动、会转向、使用多个div表示8、 关于调试1、 错误种类语法错误逻辑错误程序可以正常运行,但结果不是我们想要的2、 关于IE的调试代码示例:1) 打开开发人员工具2) 点开脚本选项卡3) 设置断点在我们认为可能出现的问题的行的前面点击,点击开始调试,效果如下:4) 设置要监视的变量局部变量:会把当前程序所有变量列出来,但是变量较多的情况,看起来不方便监视:有选择性的监视5) 利用逐语句或逐过程按钮运行程序,运行过程中观察监视变量的值逐语句:逐条语句执行,遇到函数,会进入到函数内部执行逐过程:遇到函数,直接执行,而不进入九、作业1、 数组arr.find(80) Array2、 数字i.display(1,2,382);i.display(3,2);3、 浮动Day5JS正则表达式1、 简介1、 什么是正则表达式正则表达式本身就是一种语言,这在其它语言是通用的正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 str.indexOf(abc);/精确匹配 只能匹配字符串“abc”正则表达式/模糊匹配Where name=zhangsan;/精确匹配Where name like zhang%;/姓名以zhang开始的字符串2、 为什么使用正则表达式1) 验证邮箱2) 手机号3) 银行卡号4) 采集器186lO6598395) 中奖信息186*98396) 屏蔽特殊词汇3、 快速入门1) 查找一个字符串中是否具有数字“8”2) 查找一个字符串中是否具有数字3) 查找一个字符串中是否具有非数字2、 正则对象要使用正则表达式,必须要在程序创建正则对象1、 如何创建正则对象?我们需要得到一个RegExp类的实例1) 隐式创建var 对象=/匹配模式/匹配标志;2) 直接实例化var 对象=new RegExp(“匹配模式”,匹配标志);以上两种用法区别:Var reg=/d/gi;如果使用直接实例化,那么像“d”这样的字符,需要转义”d”,如下:Var reg=new RegExp(“d”,”gi”);2、 匹配标志:g:全局匹配i:忽略大小写3、 如何使用正则对象在js中,使用正则对象主要有两种用法:1、 RegExp类test(str):匹配指定的模式是否出现在字符串中reg.test(str);exec(str):返回匹配模式的字符串reg.exec(str);2、 Sring类search:匹配符合匹配模式的字符串出现的位置,没有匹配到则返回-1str.search(reg);match:以数组形式返回匹配模式的字符串,没有匹配到则返回nullstr.match(reg);replace:使用指定的内容替换匹配模式的字符串str.replace(reg,”content”);split:使用匹配模式的字符串做为分隔符对字符串进行分割,返回数组str.split(reg);RegExptestexecStringSearchMatchReplaceSplit不同的情况下使用不同的方法如:我想知道邮箱格式、手机格式、IP格式合不合法,用test如果想抓取网页中所有的手机号,使用exec或match想替换掉网页中敏感词汇,用replace4、 几个重要的概念子表达式在正则匹配模式中,使用一对括号括起来的内容是一个子表式捕获在正则匹配模式中,子表达式匹配到的内容会被系统捕获至系统的缓冲区中反向引用捕获之后,可以在匹配模式中,使用n (n:数字)来引用系统的第n号缓冲区内容例1:匹配多个字符后面是三个数字,后面的内容和前面多个字符相同,如:abc123abc例2:习题:查找连续的四个数字,如:3569var reg=/dddd/gi;查找连续的相同的四个数字,如:1111var reg=/(d)111/gi;查找数字,如:1221,3443Var reg=/(d)(d)21/gi;查找字符,如:AABB,TTMMVar reg=/(w)1(w)2/gi;查找连续相同的四个数字或四个字符Var reg=/(w)111/gi;一般情况,后面的内容要求与前面的一致,就会用到子表达式、捕获、反向引用的概念例3:在一个字符串,查找一对html标记以及中间的内容例4:关于子表达式和exec方法exec方法和match方法的比较:Exec方法是RegExp类下的方法Match是String下的方法Match方法直接返回一个数组Exec方法需要使用循环反复调用如果有子表达式,exec方法会将子表达式的捕获结果放到数组对应的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计外包合同(2篇)
- 洗胃技术操作规范
- 2024年七月地下管廊砂砾石智能压实度监测协议
- 管理干部人才梯队建设
- 生产消防安全警示
- 2025年03月湖南机电职业技术学院第二批引进高层次技能型人才公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 建筑设备安装工程施工组织与管理(第3版)课件:安全检查
- 建筑力学课件:静定结构的内力
- 绿色安全垃圾分类
- 生产清场管理制度详解
- 2024年北京稻香村招聘考试真题
- 2025年4月自考15044马克思主义基本原理概论押题及答案
- 两台37kW三相交流电动机的动力配电柜设计
- 拖欠房租起诉书【5篇】
- 医院临时用药申请表
- 农民合作社财务报表(专业应用)
- T∕CIS 71001-2021 化工安全仪表系统安全要求规格书编制导则
- 第4章-3D构型图-Chem3D
- 第六章广播电视的传播符号
- 预制梁质量控制要点及注意事项手册
- 校园避震有办法PPT课件
评论
0/150
提交评论