已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaScript读书笔记以下笔记大部分整理自JavaScript权威指南,本文仅方便大家遇到问题时快速查询。建议大家阅读原书。水平有限,如有错误请大家指正。1 JavaScript基本语法1) 读未声明的变量会产生错误。写未声明的变量会是JavaScript环境自动产生一个全局变量。2) 对于完全等同“=”,两个null或者两个undefined是等同的;但null与undefined是不等同的。3) 对于相等“=”, null与undefined是相等的。若值与对象比较,核心语言内部类会尝试用valueof()转换,再尝试用toString()转换。就是说valueof()会比toString()有更高的优先级。但规则不绝对,例如Date类,它会首先尝试用toString()转换。当类的这两个方法实现不一致时,在要进行类型转换时指定具体的实现方法比较安全。4) 在比较运算中,若一个对象或值被转换成NaN(Not a Number),则永远返回false。5) in可以检查指定字符串是否是一个对象的基本属性或方法名称;instanceof运算符返回左边的对象是否右边类的一个实例;delete可以删除一个属性,它不会影响到属性关联的对象的生存,若该属性不存在会返回true;可以以字符串的方式存取对象的属性。6) typeof函数的返回值:数字number,字符串string,布尔值Boolean,对象、数组、nullobject,函数名function或undefined(未定义时)。主要用来区别区别对象和原始类型。要区分对象的具体类型,用instanceof运算符。7) 在函数体内有隐含的arguments对象,可取得所有传入的参数,可用类似数组的方式读/写各参数,length属性表示参数的个数。但函数的只读属性length表示函数实际定义的参数个数。一个名为callee的属性代表函数本身。8) 构造函数也是函数,但它通过new调用,无返回值。函数体内通过this来取得将要初始化的对象。9) 对象的方法可用this对对象自身进行操作,其它方面与普通的函数没有任何区别。10) 每个类都有一个原型(prototype)对象,它具有一套属性和方法,用来共享一个类的方法和常量,还有一个constructor的属性引用构造函数。11) JavaScript中面向对象的特性:a) 实例属性:在构造函数创建或初始化的属性。b) 实例方法:在构造函数中把原型对象中的一个属性设为函数来实现。c) 类属性:构造函数本身的属性。d) 类方法:用合适的函数作为构造函数本身的一个属性。e) 子类:把原型对象赋值为父类的一个实例,默认父类为Object的实例。同时还要将prototype.constructor赋值为子类的构造函数自己。f) 继承:只是在查询一个属性时自动发生,而不会在写属性时发生,就是说单写一个父类的属性时,JavaScript环境会为对象本身创建一个同名的属性,从此该属性就覆盖了父类中的属性。12) 创建一个数组可用 new Array() 。可以在构造函数参数中指定数组的前n个元素的值。数组的元素可以具有任意类型,甚至是另外一个数组。同一数组中可以存在不同类型的元素。数组的length是可读写的。这也是缩短一个数组的唯一方法。2 客户端JavaScript2.1 Window类1) Window类的实例是全局对象,用它的window或者self属性可引用它自己。2) 一个应用程序出现的每个窗口或框架都对应一个Window对象,而且都为客户端JavaScript代码定义了一个唯一的执行环境。3) 脚本执行过程是Web浏览器的HTML解析过程的一部分。脚本按照它们的出现顺序执行。4) 简单的对话框可用:alert()、 confirm()、 prompt()之一。5) 时间间隔方法为: setInterval()、 cleraInterval() 。6) onerror属性指明错误处理的方式。 navigator属性包含Web浏览器总体信息。 screen属性包含显示器的信息。7) 打开窗口用open()方法,返回值是被打开的窗口。调用应该明确指明是window.open(),以避免和document.open()方法混淆。同时还应该调用focus()方法使窗口成焦点保证窗口可见。opener属性是打开自己的那个窗口,若是用户手动打开,这位null。8) 关闭窗口用window.close()方法,窗口关闭后,代表它的Window对象可能还生存,可用closed属性进行判断它是否已经被关闭。9) 控制窗口几何大小可用moveTo()、moveBy()、resizeTo()、resizeBy()。滚动可用scrollTo、scrollBy()。10) 成焦点和失焦点可用 focus()、blur()。11) location属性代表当前显示文档的URL。对其赋值使浏览器装载新的URL(用Back按钮能回退到原页面)。其实,它是Location类的一个实例,它还有一个reload()方法可以装载信的URL(用Back按钮不能回退到原页面)。12) history属性可看成是代表历史URL的一个特殊数组,它的可读length属性表明数组的长度。支持三种方法back()、forword()、go()。13) 一个窗口中的任何框架都可以使用属性frames、parent和top引用窗口中的其它框架。14) 若框架指定了名字,引用就会被存储到它的父Window对象的一个同名新属性中。15) 自定义的函数和构造函数只在定义它的窗口中可见。别的窗口要先通过一个属性来引用。但JavaScript默认的函数和构造函数会在每个窗口中拥有独立副本。16) onload()和onunload()事件分别在网页装载完成后和卸载前执行。2.2 Document类1) Document类的实例(即window.document)有forms、images、links、applets几大数组。也可以通过与name属性一样的Document的属性直接访问这些元素,或者通过数组的命名属性访问。如:document.forms.f1 = document.forms.“f1”。2) links代表文档中的Link对象数组,由HTML的或者定义,Link对象代表超级链接的URL,具有Location类的所以属性。3) anchors代表文档中的Link对象数组,由HTML的定义。4) applets代表文档中的Link对象数组,由HTML的或嵌入在文档中的Applet对象组成。5) embeds代表文档中的Link对象数组,由HTML的或嵌入在文档的非Applet对象组成。6) Write()方法可以生成网页内容,但只能在文档被解释时调用,即在块中调用。创建新文档的标准格式为:xxx.document.open(); xxx.document.write(“ABC”); xxx.document.close(); 其中的open()方法是可选的, JavaScript会隐式打开一个新的文档。7) 用Image()构造函数能产生一个屏外图像,强迫浏览器装载图像,其onload事件处理程序能在图片装载后马上执行。2.3 Form类1) Form类的实例代表一个HTML表单,通过Document的forms数组可以得到其实例。2) elements数组代表表单中所有输入元素,并可通过type属性知道每个元素的具体类型。3) submit()方法和reset()方法分别用于提交或者重置表单。但与直接点击按钮不一样,两个方法不会出发对应的onsubmit和onrest事件。4) 如果HTML的定义了name属性,则Document对象会多存储一个同名属性,指向该Form对象。各元素的情况类似,同时如果表单中由多个HTML元素的name属性相同,这些元素会被存放到一个数组中,按元素的出现顺序排序。2.4 Cookie类1) 能用Document的cookie属性对Web浏览器的cookie进行操作,其属性是一个特殊的字符串属性。2) cookie除了名值对外,还有四个可选属性:expires有效期、path可见路径、domain可见域、secure是否在安全协议间传输。3) cookie值不能有分号、逗号或空白符,所以要用escape()方法进行编码,读取时用unescape()进行解码。4) cookie的默认属性通过字符串“;expires=”的形式附加,其中有效期要用Data.toGMTString()格式化。5) 要改变一个cookie的值,用同名字和新值再设置cookie一次。要删除,将同名值、任意值加上一个过去的有效期来设置。6) 读取一个cookie时,返回一个字符串,是name=value对的列表,用分号隔开。2.5 DOM文档对象模型1) 可用Document对象的implementation.hasFeature()方法查询是否支持特定的DOM特性。2) Document中有childNodes、firstChild、lastChild、nextSibling、previousSibling来遍历各个节点。3) Document中的getElementsByTagName()方法返回指定HTML标记类型的数组。方法的参数不分大小写,可用“*”来返回所有元素。4) Document中的getElementsById()方法返回指定id的元素。5) DocumentFragment是一种特殊类型的节点,自身不会出现在文档中,只作为连续节点集合的临时容器,用createDocumentFragment()创建。2.6 CSS级联样式表1) CSS样式由一个名/值的性质对列表指定,性质对之间用分号隔开,名称和值之间用冒号分隔。2) 样式性质如果有“inherit”的话,说明它应该继承自己父元素的值。3) 可用特殊快捷性质把常常在一齐使用的样式性质组合在一起。就是“快捷性质名:连续多个值”。如:font:bold italic 24pt Helvetica; 。4) CSS的规则从一个选择器开头,指定HTML元素(小写),用大括号括起属性和值。用逗号分隔开头的选择器名称表示样式都适用于它们。若无逗号分隔,表示一个标记嵌套在另一个标记时适用。还可以用“.”号开头指定HTML元素的类,HTML元素的类由HTML中的class属性指定,可混用以上的两种方法。用“#”开头指定适用于具体id的HTML元素。5) 样式表可以放在部分的和标记之间。或用引用。可混用以上两种方法,在标记范围内用import引用。6) 用户样式覆盖默认样式,作者样式覆盖用户样式,内联样式覆盖所有样式。一个元素上应用多个样式,最为详细规则定义的样式将覆盖不太详细规则定义样式相冲突的部分。7) 只要position属性不是被设为static,就可以用left、top、right、bottom这些性质的任意组合来定义元素的位置。width、height定义大小,单位可以是:%、px(像素)、in(英寸)、cm(厘米)、pt(点)、em(当前字体行高)。8) z-index默认为0,值越小越先被绘制,此规则只适用于同一容器内的子元素。9) visibility、display都可以控制可见性,同设为none时,在常规的流布局中,visibility是分配了空间,display没有分配空间。10) 用overflow指定超出元素边框是的处理。用clip确定显示元素的哪些部分。用rect指定具体区域。11) 在JavaScipt中,获取了一个HTML元素后,就可以通过元素的style属性获取那个元素的CSS2Propertites对象。设置这些属性与设置HTML元素的style性质中的效果一样。但无法用JavaScript来设定样式表的信息。同时紧记,在使用CSS2Propertites对象的样式属性时,所有值都必须是字符串(要加上引号),有单位的情况也记得加上单位。CSS2Propertites没有提供查询CSS级联的方法,也没有提供判断应用于特定元素的完整样式集合的方法。12) JavaScript中CSS性质的命名规范:去掉CSS性质名中包含的所以连字符(减号),且把原来紧接在连字符后的字母改成大写。若CSS性质对应有float属性,给属性要加上css前缀,变成cssFloat。2.7 事件与事件处理1) 主要的基本事件:onabor、onblur、onchange、onclick、onerror、onfocus、onkeydown、onkeypress、onkeyup、onload、onmousedown、onmouseout、onmouseover、onmouseup、onrest、onresize、onselect、onsubmit、onunload。2) 事件处理程序被设置为JavaScript代码串,作为HTML的性质值,并在Document对象中有同名的JavaScript属性映射。当通过JavaScript进行访问时,事件处理程序的属性时函数。要通过JavaScript把一个事件处理程序赋给一个文档的元素,只要把事件处理程序属性设置为想用的函数即可,应该把函数自身赋予事件处理程序属性,而不是调用函数的结果,所以函数名称后无需加括号,或者用匿名函数。3) 可以用JavaScript直接调用事件处理函数,但这不是模拟事件发生的真实状况,只是执行定影行为的那个属性值的函数。4) 显式地调用事件处理函数可以通过JavaScript扩展HTML代码定义地事件处理函数(AOP?!),如: var oldHandler = b.onclick; function newHandler() b.onclick = function() oldHandler(); newHandler() 。5) 如果浏览器执行某种默认动作来相应一个事件,那么返回false可以阻止浏览器执行那个动作。一个例外是鼠标移动到一个超链上,要阻止默认动作,onmouseover事件处理程序要返回true。6) HTML性质的事件处理程序作用域的头是调用的对象,下一个是触发事件处理程序的事件对象,还会延伸到包容层,最终到达Window对象。同时,作用链的精确构成尚未标准化,不同的浏览器有不同的实现。理想的方法是让它们只调用在别的地方定义的全局函数。7) 在IE46中,用Event对象提供发生事件的详细情况,它是Window对象的一个属性(全局)。8) 利用onPropertyChange事件,可捕捉多种情况,例如键盘输入、粘贴等,是捕捉对象内容改变的良好方式。2.8 安全1) 同源策略:一个脚本只能读取与它同源的窗口或文档属性。如果两个窗口(或框架)含有的脚本把domain设为相同,他们就自动满足此策略。2.9 JavaScript与Java1) JavaScript可以访问Applet的公共字段和方法。2) Java与JavaScript的所有交互都能由netscape.javascript.JSObject类的实例来处理。可惜不管是Netscape还是IE都有bug!3) Nescape的LiveConnect技术还允许JavaScript程序实例化自己的Java对象并使用他们,但IE不支持!3 特殊技巧1) 把合理的字符串转换成数字的简单方法:表示数字的字符串变量 0 。2) 把数字转换成字符串的简单方法: 数字(或数字变量) + “” 。3) 用String类的localeCompare()方法对中文字排序,能出到按拼音排序的效果。4) 利用Number类的toFixed()方法,可以格式化小数位数。5) 用Window对象的 showModalDialog()方法可以打开一个模态窗口,showModelessDialog()可以可以打开一个非模态的窗口。4 注意事项1) 大部分的HTML元素都会以其name属性在JavaScript环境中映射为属性,所以为HTML元素起名字要非常小心,不要覆盖主要JavaScript的对象名称或者方法名称。2) 不能在JavaScript代码中出现“”,哪怕是字符串。若要出现该字符串,至少要表示为:” 的形式。javascript学习笔记(一)对象 一、定义类或对象1.工厂方式创建对象car var oCar = new Object;oCar.color = red;oCar.doors = 4;oCar.mpg = 23;oCar.showColor = function()alert(this.corlor);创建多个carfunction createCar(color, doors, mpg) var tempcar = new Object; tempcar.color = color; tempcar.doors = doors; tempcar.mpg = mpg; tempcar.showColor = function () alert(this.color) ;return tempcar;var car1 = createCar(red, 4, 23);var car2 = createCar(blue, 3, 25);car1.showColor(); /outputs redcar2.showColor(); /outputs blue这个例子中,每次调用函数createCar(),都要创建新函数showColor(),意味着每个对象都有自己的showColor()版本,事实上,每个对象都共享了同一个函数。有些开发者在工厂函数外定义对象的方法,然后通过属性指向该方法,从而避开这个问题。function showColor()alert(this.color);function createCar(color, doors, mpg) var tempcar = new Object; tempcar.color = color; tempcar.doors = doors; tempcar.mpg = mpg; tempcar.showColor =showColor;return tempcar;var car1 = createCar(red, 4, 23);var car2 = createCar(blue, 3, 25);car1.showColor(); /outputs redcar2.showColor(); /outputs blue从功能上讲,这样解决了重复创建函数对象的问题,但该函数看起来不像对象的方法。所有这些问题引发了开发者定义的构造函数的出现。2.构造函数方法function Car(sColor, iDoors, iMpg) this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.showColor = function () alert(this.color) ;var oCar1 = new Car(red, 4, 23);var oCar2 = new Car(blue, 3, 25);oCar1.showColor(); /outputs redoCar2.showColor(); /outputs blue就像工厂函数,构造函数会重复生成函数,为每个对象都创建独立的函数版本。不过,也可以用外部函数重写构造函数,同样,这么做语义上无任何意义。3.原型方式function Car()Ctotype.color = red;Ctotype.doors= 4;Ctotype.mpg= 23;Ctotype.showColor = function()alert(this.color);var oCar1 = new Car();var oCar2 = new Car();它解决了前面两种方式存在的两个问题。但并不尽人意。首先,这个构造函数没有参数。使用原型方式时,不能通过构造函数传递参数初始化属性的值,这点很令人计厌,但还没完,真正的问题出现在属性指向的是对象,而不是函数时。考虑下面的例子:function Car()Ctotype.color = red;Ctotype.doors= 4;Ctotype.mpg= 23;Ctotype.drivers = new Array(Mike,Sue);Ctotype.showColor = function()alert(this.color);var oCar1 = new Car();var oCar2 = new Car();oCar1.drivers.push(Matt);alert(oCar1.drivers);/outputs Mike,Sue,Mattalert(oCar2.drivers);/outputs Mike,Sue,Matt4.混合的构造函数/原型方式function Car(sColor, iDoors, iMpg) this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array(Mike, Sue);Ctotype.showColor = function () alert(this.color);var oCar1 = new Car(red, 4, 23);var oCar2 = new Car(blue, 3, 25);oCar1.drivers.push(Matt);alert(oCar1.drivers); /outputs Mike,Sue,Mattalert(oCar2.drivers); /outputs Mike,Sue现在就更像创建一般对象了。所有的非函数属性都有构造函数中创建,意味着又可用构造函数的参数赋予属性默认值了。因为只创建showColor()函数的一个实例,所以没有内存浪费。5.动态原型方法function Car(sColor, iDoors, iMpg) this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array(Mike, Sue); if (typeof Car._initialized = undefined) Ctotype.showColor = function () alert(this.color); ; Car._initialized = true; var oCar1 = new Car(red, 4, 23);var oCar2 = new Car(blue, 3, 25);oCar1.drivers.push(Matt);alert(oCar1.drivers); /outputs Mike,Sue,Mattalert(oCar2.drivers); /outputs Mike,Sue动态原型方法的基本想法与混合的构造函数/原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义。唯一的区别是赋予对象方法的位置。6.混合工厂方式这种方式通常是在不能应用前一种方式时的变通方法。它的目的是创建假构造函数,只返回另一种对象的新实例。function Car() var tempcar = new Object; tempcar.color = red; tempcar.doors = 4; tempcar.mpg = 23; tempcar.showColor = function () alert(this.color) ;return tempcar;与经典方式不同,这种方式使用new运算符,使它看起来像真正的构造函数。7.采用哪种方式如前所述,目前使用最广泛的是混合的构造函数/原型方式。些外,动态原型方法也很流行,在功能上与前者等价,可以采用这两种方式中的任何一种。二、修改对象1.创建新方法可以用prototype属性为任何已有的类定义新方法,就像处理自己的类一样。例:Atotype.indexOf = function(vItem)for(var i=0;ithis.length;i+)if(vItem = thisi)return i;retunr -1;最后,如果想给ECMAScript中的每个本地对象添加新方法,必须在Object对象的prototype属性上定义它。2.重定义已有方法就像能给自己的类定义新方法一样,也可重定义已有的方法。函数名只是指向函数的指针,因此可以轻易地使它指向其他函数。如Ftotype.toString = function()return Function code hidden;function sayHi()alert(hi);alert(sayHi.toString();/outputs Function code hiddenjavascript学习笔记(二)继承 一、继承的方式1.对象冒充function ClassA(sColor) this.color = sColor; this.sayColor = function () alert(this.color); ;function ClassB(sColor, sName) this.newMethod = ClassA; this.newMethod(sColor); delete this.newMethod; = sName; this.sayName = function () alert(); ; var objA = new ClassA(red);var objB = new ClassB(blue, Nicholas);objA.sayColor();objB.sayColor();objB.sayName();所有新的属性和新的方法都必须在删除了新方法的代码行后定义。否则,可能会覆盖超类的相关属性和方法。对象冒充可以支持多继承。function ClassZ()this.newMethod = ClassX;this.newMethod(sColor);delete this.newMethod;this.newMethod = ClassY;this.newMethod(sColor);delete this.newMethod;这里存在一个弊端,如果ClassX和ClassY具有相同的属性或方法,ClassY具有高优先级,因为继承的是最后的类。2.call()方法call()方法是与经典的对象冒充方法最相似的方法,它的第一个参数用作this的对象,其他参数都直接传递函数自身。function ClassA(sColor) this.color = sColor; this.sayColor = function () alert(this.color); ;function ClassB(sColor, sName) /this.newMethod = ClassA; /this.newMethod(color); /delete this.newMethod; ClassA.call(this, sColor); = sName; this.sayName = function () alert(); ;var objA = new ClassA(red);var objB = new ClassB(blue, Nicholas);objA.sayColor();objB.sayColor();objB.sayName();3.apply()方法apply()方法有两个参数,用作this的对象和要传递参数的数组。例如:function ClassA(sColor) this.color = sColor; this.sayColor = function () alert(this.color); ;function ClassB(sColor, sName) /this.newMethod = ClassA; /this.newMethod(color); /delete this.newMethod; ClassA.apply(this, arguments); = sName; this.sayName = function () alert(); ;var objA = new ClassA(red);var objB = new ClassB(blue, Nicholas);objA.sayColor();objB.sayColor();objB.sayName();当然,只有超类中的参数顺序与子类中的参数顺序完全一致时才可以传递参数对象。如果不是,就必须创建一个单独的数组,按照正确的顺序放置参数。此外,还可以使用call()方法。4.原型链function ClassA() ClassA.prototype.color = red;ClassA.prototype.sayColor = function () alert(this.color);function ClassB() ClassB.prototype = new ClassA();ClassB. = ;ClassB.prototype.sayName = function () alert();var objA = new ClassA();var objB = new ClassB();objA.color = red;objB.color = blue;objB.name = Nicholas;objA.sayColor();objB.sayColor();objB.sayName();注意,调用ClassA的构造函数时,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。原型链的弊端是不支持多重继承。5.混合方式与创建对象最好方式相似,用对象冒充继承构造函数的属性,用原型链继承prototype对象的方法。function ClassA(sColor) this.color = sColor;ClassA.prototype.sayColor = function () alert(this.color);function ClassB(sColor, sName) ClassA.call(this, sColor); = sName;ClassB.prototype = new ClassA();ClassB.prototype.sayName = function () alert();var objA = new ClassA(red);var objB = new ClassB(blue, Nicholas);objA.sayColor();objB.sayColor();objB.sayName();二、其他继承方式1.zlnherit库可以从/downloads处下载zInherit库给Object类添加了两个方法,inheritFrom()和instanceOf()ClassB.prototype.inheritFrom(ClassA);CalssB.instanceOf(ClassA);2.xbObjects库可以从/xbprojectsdocs/xbobject/处下载第一步,必须注册类。_classes.registerClass(Subclass_Name,Superclass_Name);这里,子类和超类名都以字符串形式传进来,而不是指向它们的构造函数的指针。这个调用必须放在指定子类的构造构函数前。第二步,在构造函数内调用defineClass()方法,传给它类名及被Clary称为原型函数的指针,该函数用于初始化对象的所有属性和方法。如_classes.registerClass(ClassA);function ClassA(color)_classes.defineClass(ClassA,prototypeFunction);function prototypeFunction()/.第三步,为该类创建init()方法。该方法负责设置该类的所有属性,它必须接受与构造函数相同的参数。作为一种规约,init()方法总是在defineClass()方法后调用。_classes.registerClass(ClassA);function ClassA(color)_classes.defineClass(ClassA,prototypeFunction);this.init(sColor);function prototypeFunction()ClassA.prototype.init = function(sColor)this.parentMethod(init);this.color = sColor;第四步,在原型函数内添加其他类的方法。_classes.registerClass(ClassA);function ClassA(color)_classes.defineClass(ClassA,prototypeFunction);this.init(sColor);function prototypeFunction()ClassA.prototype.init = function(sColor)this.parentMethod(init);this.color = sColor;ClassA.prototype.sayColor =function()alert(this.color);然后,即可以以常规方式创建ClassA的实例var objA = new ClassA(red);objA.sayColor();/outputs resjavascript学习笔记(三)正则表达式 一、简单模式1.元字符这里是正则表达式用到的所有元字符( $ | ) ? * + .任何时候要在正则表达式中使用这些元字符,都必须对它们进行转义。因此要匹配一个问号,正则表达式就该这样表示:var veQMark =/?/;或者这样表示:var veQMark=new RegExp(?);注意当正则表达式以第二种形式表示时,所有的反斜杠都必须用两个反斜杠来替换,因为javascript字符串解析器会按照n的方式尝试翻译?。为了保证不会出现这个问题,在元字符的前面加上两个反斜杠(双重转义)。这个小小的gotcha就是多数开发者更偏好使用字面量语法的原因。2.使用特殊字符要使用ASCII来表示一个字符,则必须指定一个两位的十六进制代码,并有前面加上x。例如字符b的ASCII码为98,等于十六进制的62,因此,表示字符b可以使用x62另外也可以使用八进制代替十六进制来指定字符代码,直接在反斜杠之后跟上八进制数值,例如,b等于八进制的142,所以下面就该这样/142/如果要使用Unicode来表示字符,必须指定字符串的四位十六进制表示形式,因此b应该是u0062另外还有其他一些预定义的特殊字符,如下表所列字符描述t制表符n换行符r回车符f换页符aalert字符eescape字符cx与X相对应的控制字符b回退字符v垂直制表符0空字符3.字符类3.1简单类假设相匹配bat,cat,fat。使用简单类可以很方便的解决这个问题/bcfat/gi后面的g表示全匹配,i表示不区分大小写。3.2负向类要匹配
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年部编版新教材道德与法治八年级上册教学计划(含进度表)
- 肺部听诊与肺部物理治疗
- 消化性溃疡的护理和观察
- 作业治疗病例汇报
- 员工思想报告范例2026(3篇)
- 电子政务自查报告(3篇)
- 安全会议APP指南讲解
- 安全责任罚则讲解
- 2026及未来5年中国啤酒机数据监测研究报告
- 2026及未来5年中国吊带手挽袋数据监测研究报告
- 2026年贵州省中考英语试题(含答案)
- 2026年福建从村党组织书记、村委会主任中考试录用乡镇机关公务员练习试题及答案
- 2026年网格员矛盾纠纷排查化解理论知识试题及答案
- 文化墙改造施工组织设计方案
- 2026年湖北省武汉市中考数学试题卷(答案解析版)
- 【中考真题】云南省2026年初中学业水平考试语文真题试卷(含答案)
- 三升四英语暑假衔接作业完整版 人教PEP版小学三年级升四年级每日一练(可打印)
- 2026年南昌大学第二附属医院医护人员招聘考试参考试题及答案详解
- 2026年国网中高级职称评定考试(国家电网)复习题及答案
- GB/T 223.11-2008钢铁及合金铬含量的测定可视滴定或电位滴定法
- GB/T 12755-2008建筑用压型钢板
评论
0/150
提交评论