JS高级与进阶
目录======================
目录======================
1.基础
1.1.变量声明1.1.1 关键字var 储存数据的内存空间
1.2.数据类型1.2.1 基本数据类型 ; number string boolean null undefined1.2.2 复杂数据类型 object function
1.3.类型检测1.3.1 typeof 检测基本数据类型 (语法:typeof 变量||字面量)数字类型返回 "number" 字符串返回"string" boolean返回"boolean"复杂数据类型统一返回object 特殊 null返回object function返回function1.3.2 instancof 判断对象的实例 语法:实例对象 instancof 构造函数返回值 true || false1.3.3 constructor 返回对象的构造函数语法structor 返回构造函数名1.3.4 String.call();字符串返回:"[object String]"数字返回:"[object Number]"null返回:"[object Null]"undefined返回:"[object Undefined]"object返回:"[object Object]"boolean返回:"[object Boolean]"数组返回:"[object Array]"
1.4 类型转换1.4.1 转换成number 方法:Number()、parseInt() 、parseFloat() 通过运算符转换 转换不成功返回NAN1.4.2 转换成:string 方法:.toString()、String、通过字符串拼接 +1.4.3 boolean Boolean() 、!!取反 值得注意的是 :0 '' null undefined NaN //会转换成false 其它都会转换成true
1.5 操作符1.5.1 算术运算符 +-/* 1.5.2 一元运算符 ++ -- !1.5.3 赋值运算符 = += -+ /+ *+1.5.4 逻辑运算符 && || 1.5.5 关系运算符 > < >= <=1.5.6 相等运算== != !== ===1.5.7 优先级 () > 一元> 算术 > 关系 > 逻辑(先&&后||) > 赋值不同类型直接操作符号隐式转换转换规则:有数字或者boolean 转数字比较 (++ -- 运算符相当于加一 减一所以是转成数字)没有数字和bool 有字符串 转换成字符串复杂数据类型比较地址其中值得注意是 等等 和 全等的比较转换x y = = = = = 0 false true false"" false true false"" 0 true false"0" 0 true false"17" 17 true falsenull undefined true falsenull 0 false falsenull false false falseundefined false false false0 NaN false false"foo" NaN false falseNaN NaN false false1. null == undefined 返回的是true2. null 和undefined 和其他类型判断相等的时候,不转换类型3. 一般只要有NaN参与的运算,返回都是NaN NaN转换成boolean 是false . NaN != NaN 返回的是true;1.6 流程控制语句1.6.1 分支结构1:if(){...}else {..}2.switch (){case value:break;default:break;}1.6.2 三元运算 语法: 条件? 表达式1 :表达式21.6.3 循环语句for(var i=0;i<10;i++){ 循环体 }for(var key in obj){}while(条件){循环体 }do{ 循环体 }while ( 条件); //至少执行一次1.7 数组1.7.1 创建数组1、字面量var arr = [];2、构造函数 var arr = new Array();1.7.2.数组操作通过下标 增删改
1.8 函数1.8.1 函数三要素 函数名 参数 返回值1.8.2.声明 1.字面量 var fn = function(a,b,c){return}2.函数声明 function fn(){}3.函数调用 函数名()arguments对象 每个函数内部都有一个arguments对象与形参对象 成映射关系
1.9.对象1.9.1.概念:一类事物的抽象,在编程语言中理解成无序的属性和方法的结合创建对象1.字面量 var obj = {};2.内置构造函数 var obj = new Object();3.工厂模式 语法:function createP(name, age) {var o = new Object();o.name = name;o.age = age;o.sayUrl= function() {alert(this.age);}return o;}var obj = createP("OTT","18");4.自定义构造函数语法:function P(name ,age){this.name = name;this.age = age;}行内约定:一般来说构造函数首字母大写 1.9.2 属性操作1.通过 点语法 中括号语法操作 obj.name 或者 obj["name"]2.delete obj.key 删除对象属性
1.10.内置对象1.10.1 Array 数组的方法array.push(value);//将一个或多个元素添加到数组的结尾,返回lengtharray.pop();//从数组中删除最后一个元素 改变了数组的长度 返回被删除的元素array.unshift(value);//将一个或多个元素添加到数组的开头 返回lengtharray.shift();//从数组中删除第一个元素,改变了数组的长度 返回被删除的元素verse();//翻转数组,返回翻转过的数组 原数组不变array.sort();//默认排序顺序是根据字符串Unicode码点 可以传函数.sort(function (a,b){return });返回值<=0 位置不变 返回值大于0 交换位置 原数组发生改变concat:数组合并,不会影响原来的数组,会返回一个新数组join(str);以str将数组连接成字符串 slice(begin, end):复制数组的一部分到一个新数组,并返回这个新数组splice(begin,num,val); 在begin位置删除num个元素 并将val填补到该位置 返回被踢除的元素 原数组发生改变forEach(function(ele,i){ });遍历数组的每一项 无返回值map(function(ele,i){ });为数组的每项执行回调函数并将返回值存到数组 返回这个数组 原数组不变 (注意不会忽略数组的 空项(值为) 实际上数组的内置对象都不会忽略空项目)filter(functiong( ele ,i){});为数组的每项执行回调函数并将返回值为true的项目 存到数组 返回这个数组 原数组不变reduce(functin(a,b){ return a;},a);为数组的每项执行回调函数 并将a带入到下次循环 最后返回a 如果不传参数那么默认是前一项 原数组不变1.10.2 String 对象charAt("要查询的字符") //获取指定位置处字符charCodeAt(index) //获取指定位置处字符的ASCII码indexOf:获取某个字符第一次出现的位置,如果没有,返回-1lastIndexOf:从后面开始查找第一次出现的位置。如果没有,返回-1trim();//去除字符串两边的空格,内部空格不会去除toUpperCase()//全部转换成大写字母toLowerCase()//全部转换成小写字母concat字符串拼接返回新的字符串 一般都用 + 号slice(start,end)包含头不包含尾返回一个新的字符串,end为负值从后往前 原字符串不变 substring(start,end)包含头,不包含尾 返回一个新的字符串 原字符串不变substr(从start开始,截取length个字符)(推荐)split:将字符串分割成数组,原字符串不改变(很常用)replace(searchValue, replaceValue)//参数:searchValue:需要替换的值 replaceValue:用来替换的值1.10.3 Data 日期对象 创建:var d = new Data();或者 w();d.getTime() // 返回毫秒数和valueOf()结果一样,valueOf()内部调用的getTime()d.getMilliseconds() getSeconds() // 返回0-59getMinutes() // 返回0-59getHours() // 返回0-23getDay() // 返回星期几 0周日 6周6getDate() // 返回当前月的第几天getMonth() // 返回月份,***从0开始***getFullYear() //返回4位的年份 如 20161.10.4 Math 算术对象Math.PI // 圆周率Math.random()// 生成随机数Math.floor()/il()// 向下取整/向上取整und()// 取整,四舍五入Math.abs() // 绝对值Math.max()/Math.min()// 求最大和最小值Math.sin()/s() // 正弦/余弦Math.power()/Math.sqrt() // 求指数次幂/求平方根内置对象中Math是对象 而其他的是构造函数 需要用new构建1.11 值类型与引用类型1.值类型:简单类型,变量在存储的时候,存储的是值本身2.引用类型:复杂类型,变量在存储的时候,存储的是对象的地址
2 Web API
2.1 概念1.Application Programming Interface,应用程序编程接口2.web api 是浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM)
2.2 DOM1.DOM的概念Document Object Model 文档对象模型是W3C组织推荐的处理可扩展标记语言的标准编程接口。可以动态地访问程序和脚本,对web文档进行增删改查 。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中2.DOM操作获取页面元素id选择器ElementById("id") 通过id获取页面元素 返回一个dom对象class选择器 ElementsByClassName(""类名) 通过类名获取页面元素 返回一个伪数组 无论的多个元素还是一个元素标签选择器 ElementsByTageName(“标签名”) 通过标签名获取元素 返回一个伪数组 无论获取是多个还是一个元素name属性选择器 ElementsByName("name名"); 通过表单元素的name属性获取元素 永远返回一个伪数组css选择器 document.querySelector("同css选择器写法") 返回dom元素document.querySelectorAll() 返回伪数组2.注册事件1.事件三要素事件源、事件名、处理方法2.注册事件的方式元素.onclick = function(){} //重复注册事件后面覆盖前面的元素.addEventListener("click",function(){ },boolean)//参数:事件名 回调函数 是否事件冒泡 重复注册事件不会覆盖第三个参数默认 false即冒泡传递 当值为true时,事件使用捕获传递注意:IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持3.attachEvent(""元素"",function(){},boolean)IE8版本之前的方法 事件不会覆盖3.移除事件1.元素.onclick = null;利用null覆盖掉前面的注册事件2..removeEventListener('事件名', 函数名, false);想要移除事件 那么在之前注册时必须有函数名注意:IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持3.detachEvent('onclick', 函数名) 早期IE方法4.兼容性封装1.注册事件function addEventListener(element, type, fn) {if (element.addEventListener) {element.addEventListener(type, fn, false);} else if (element.attachEvent){element.attachEvent('on' + type,fn);} else {element['on'+type] = fn;}};2.注册事件function removeEventListener(element, type, fn) {if (veEventListener) {veEventListener(type, fn, false);} else if (element.detachEvent) {element.detachEvent('on' + type, fn);} else {element['on'+type] = null;}}5.属性操作1.非表单元素的属性href、title、id、src、className、innerHTML和innerText2.表单元素的属性value 用于大部分表单元素的内容获取(option除外innerText)type 可以获取input标签的类型(输入框或复选框等)disabled 禁用属性(ture||false)checked 复选框选中属性(ture||false)selected 下拉菜单选中属性(ture||false)3.自定义属性操作getAttribute() 获取标签行内属性setAttribute() 设置标签行内属性removeAttribute() 移除标签行内属性与element.属性的区别: 此法获取不到行内添加的自定义属性element.属性 是在获取的元素对象上直接添加获取属性删除用dellete element.property4.样式属性操作1.使用style方式设置的样式通过此方法设置的样式属性是行内样式设置宽高等需要带上“px”//ES5新增方法 ComputedStyle(元素,null) 获取计算过的属性5.类名操作1.element.className =“” 设置获取元素的class属性 通过此方法设置类名会覆盖原有类名veClass()2.//ES5新增方法 element.classList 通过此法设置不会覆盖直接追击ele.classList.add();添加.ve();删除.le();切换类名6.创建元素1.document.write 2.element.innerHTML = """";性能较差,一般先进行字符串拼接才添加到页面避免频繁操作ateElement("标签名");7.节点操作1.添加删除克隆 节点方法A.appendChild(B)将B元素添加到A元素中 同时将B元素从原来的位置删除A.insertBefore(B) 将B元素添加到A元素的起始位置A.removeChild(B) 将B元从A元素中移除A.replaceChild(B) 替换掉A元素下面的元素A.cloneNode()参数boolean类型 表示深度复制 返回一个克隆出来的来元素 克隆出来的元素跟原来是元素不关联结appendChild使用2.选择节点parentNode 父元节点childNodes 子节点children 子元素nextSibling/previousSibling 上/下一个兄弟节点nextElementsibling/previousElementSibling 上/下一个兄弟元素firstChild/lastChild 第一/最后 一个子元素8.事件对象1.onclick = function (e){e. }2.事件对象兼容性处理e= e || window.event;3.常用事件对象属性1. type 获取事件类型2. event.screenX/e.screenY 相对屏幕左上角的位置3. clientX/clientY 相对浏览器窗口位置 所有浏览器都支持4. pageX/pageY IE8以前不支持,页面位置window.pageX5. event.target || event.srcElement 用于获取触发事件的元素6. event.preventDefault() 取消默认行为7. eventPhase属性可以查看事件触发时所处的阶段8. event.stopPropagation();阻止冒泡IE低版本 event.cancelBubble = true; 标准中已废弃4.事件的三个阶段1. 事件的捕获阶段2. 事件的目标阶段(触发自己的事件)3. 事件的冒泡阶段9.事件委托1.概念:事件委托 给父元素注册事件通过e.target || e.srcElement 获取触发事件的元素
2.3 BOM2.3.1 概念BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象2.3.2 常用的方法alert()提示弹窗prompt()弹出输入框confirm()弹出选择框onload 页面加载事件setTimeout()和clearTimeout() 定时器2.3.3 window.location对象 常用方法1.location.href = "";设置||获取地址浏览 (常用作js实现页面跳转)2.location.search 地址栏参数获取load(); 刷新页面 参数 (true/false)是否强制刷新4.url组成scheme://host:port/path?query#fragmentscheme:通信协议 常用的http,ftp,maito等host:主机 服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。port:端口号 整数,可选,省略时使用方案的默认端口,如http的默认端口为80。path:路径 由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。query:查询 可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zsfragment:信息片断 字符串,锚点.2.3.4.history对象 常用方法history.back();返回 跟后退按钮等效history.forward();前进(1);参数 1前进 -1后退 0当前页面2.3.5.navigator对象 常用方法userAgent 可以判断用户浏览器的类型platform 可以判断浏览器所在的系统平台类型.2.3.6.screen对象screen.width 屏幕宽度screen.height 屏幕高度screen.availWidth 浏览器可用宽度screen.availHeight 浏览可用高度2.3.7.offset家族ele.offsetWidth 获取元素宽度height + paddnig + borderele.offsetHeight 获取元素高度 (注意:不带单位 只能获取 不能设置)设置通过style.Widthele.offsetParent 返回最近的具有非静态定位的父元素ele.offsetLeft 获取相对父元素的真实left值 left + marginele.offsetTop 获取相对父元素的真实top值 top + margin2.3.8.scroll家族ele.scrollHeight 获取自身内容的高度 可能超出盒子大小ele.scrollWidthele.scrollLeft 水平滚动条 滚动的距离ele.scrollTop 垂直滚动条 滚动的距离最常用的是用来获取页面被卷去的宽度和高度获取页面滚动距离的兼容性处理function scroll() {return {top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0};}2.3.9.client家族1.用于获取元素可视区的大小ele.clientHeight/.clientWidth 盒子可视区域的大小clientleftclienttop 获取border宽度 如果内容没有滚动条clientWidth与scrollWidth相同2.获取页面可视区的大小window.innerWidthwindow.innerHeight//IE678 document.documentElement.clientWidth3.页面可视区大小兼容性封装function client() {return {width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0};}
3.面向对象编程
3.1.基本概念3.1.1.什么是对象?我们常说万物皆对象,很笼统,在计算机中最早在c语言中把具有特定长度的类型,称作为对象类型;后来我们说内存中的一块有效区域叫对象;我把对象理解成具有某些属性和方法的变量 而创造出这些变量的抽象叫做类3.1.2.什么是面向对象?面向对象是一种思想,通过调用对象的某种方法和属性来完成某件事情,当然这个对象是我们创造出来的,我们把可能在多个地方会使用的到的功能赋给对象,在调用3.1.3.特性 1.封装性 只需要关注对象提供的方法如何使用,而不需要关心对象对象的内部具体实现2.继承 一个对象没有的一些属性和方法,另外一个对象有,拿过来用,就实现了继承3.多态 指在一棵继承树中的类中可以有多个同名但不同方法体以及不同形参的方法。多态有两种情况:覆盖和重载
3.2.创建的方式3.2.1.内置构造函数Objectvar obj = new Object();3.2.2.对象字面量var obj = {};3.2.3.工厂函数本质上就是函数内 返回对象function p (x,y){retrun {name : x,age : y}}3.2.4.自定义构造函数行内通约:首字母大写构造函数一定要使用new关键字1.new 的作用 在内存中开辟空间(对象obj)调用构造函数让构造函数的this指向新的对象 本质上就是在构造函数中var this = obj;返回 this
3.3.原型3.3.1.原型基本概念prototype1.prototype是一个对象2.所有函数自带prototyoe属性3.作用:存储公共方法3.3.2.构造函数、原型、实例的关系1.实例化对象能够访直接问构造函数的prototype2.构造函数的.prototype == 实例的.__proto__ 原型的constructor 指向构造函数3.3.3.__proto__属性 原型连1.所有对象都有 __proto__ 指向构造函数的prototype2.构造函数的.prototype == 实例的.__proto__ 例Array.prototype == [].__proto__3.3.4.属性查找原则1先在自身寻找当实力具有某个属性时自动屏蔽原型对应属性 哪怕属性值为null 通过delete操作符完全删除属性重新指向原型2.找不到再沿着__proto__一直往上找 找不到返回undefined3.structor属性1.原型对象prototype 包含constructor 指向构造函数
3.4.原型链3.4.1.原型链基本概念对象的原型和原型的连接Object是顶层对象的构造函数 Object.prototype.__proto__ ==null3.4.2.Object.prototype成员1.constructor 指向了Object 构造函数2.对象.hasOwnProperty(属性) 判断某个属性是否来自实例1.""属性""in""对象"" in操作符只要通过对象能够访问的可枚举的属性就返回 true3.构造函数.prototype.isPrototypeOf(对象) 确定原型和实例之间是否存在关系4.对象.propertyIsEnumerable(属性名) 判断对象的属性是否可枚举 注意:只能判断自身属性,原型上的需要用.__proto__.propertyIsEnumerable();设置不可枚举属性 Object.defineProperty(对象,属性,{value : "",enumerable : false})5.A.isPrototypeof(B),判断A是否在B的原型链上6.toString() 当对象需要隐式转换时系统自动调用 返回值 [object 类型]常用String.call("");做类型判断7.toLocaleString() 在没重写的情况下跟toString一样 内置对象Date String ..重新了次方法8.valueOf() 返回 将对象转换成简单类型 如果转换不成功 再次调用toString3.4.3.Object 内置方法( 函数也是对象也可以内置方法)1.Object.keys(对象)返回一个包含所有可枚举属性的字符串数组OwnPropertyNames()返回实例的所有属性 无论是否可以枚举PrototypeOf(对象) 返回对象的原型3.4.4.instanceof运算符 判断对象是否是构造函数的实例
5.继承
5.1.概念自己没有的属性、方法 借用别人的
5.2.混入式继承通过拷贝 将别人的属性和方法 混入到自身 例:var ott = {name : ""OTT"",extend : function (object){if(object && (object instanceof Object)){for(var key in object){this[key] = object[key];}}}};d({});
5.3.原型式继承5.3.1.特点:原型定义公共的属性和方法 实例定义自身属性 5.3.2.优点:最大程度的节省内存空间 同时还支持参数传递例function OTT(){this.name = ""ott"";}//改变原型指向OTT.prototype = {//此法如需要指定constructor 重新指向构造函数constructor : OTT,say : function (){ ...}}
5.4.原型+混入式继承不更改 原型指向 在原型上添加extent 方法
5.5.经典继承ES5提供ate(); 参数对象A 返回一个新对象B B继承自A例var pp = {x:d};var pp = ate(pp);
5.6.寄生构造函数模式用途 : 一般在特殊的情况下用来为对象创建构造函数注意:此模式实例跟构造函数和构造函数的原型没有关系例.function Person(name, age){var o = new Object();o.name = name;o.age = age;o.sayName = function(){alert(this.name);};return o;}var p1 = new Person(""Nicholas"", 29);p1.sayName(); //""Nicholas""
5.7.稳妥式继承||安全式继承用途 用于安全的扩展内置对象例function MyArray(){ }MyArray.prototype = [];MyArray.prototypr.push = function (){console.log(""hehe"");}var arr = new MyArray();arr.push();//hehe
6.函数进阶
6.1.定义函数的三种方式6.1.1.字面量 var fn = function (){}6.1.2.表达式 function fn(){}6.1.3.构造函数式:(作用 执行字符串形式的代码 )//参数 (,函数体) 当只有一个参数式默认为函数体//所有参数都必须是字符串var fn = new Function(""a"",""a"",""console.log(a+b)"");匿名函数自调用 原理将函数变成表达式(function (){})();(function (){}());!function (){}(); //通过运算符将匿名行数变成表达式
6.2.eval 的介绍6.2.1 作用 1.将字符串当代码执行2.将json数据转换成js代码6.2.2 利用eval 执行字符串的特性 将JSON数据转换成js对象eval(""(""+json+"")"");6.2.3.JSON介绍概念:JSON是数据格式 用于多语言交换对象转换成JSON JSON.stringify(对象) 返回json字符串JSON.parse(json) 返回js对象
6.3.函数调用this指向6.3.1 函数调用模式 当函数被调用this指向window格式 : 函数名();6.3.2 方法调用模式 当函数是某个对象的方法this指向该对象格式 : obj.fn();6.3.3. 构造函数调用模式 this指向新对象格式 var obj = new 函数名();6.3.4. 方法借调模式 call apply bind1. call 作用: 调用函数并指定this指向 格式:fn.call(this,); 第一个参数如果没有那就是指向window 后面的参数规则和函数一致2. 伪数组 扩展特点 1、有length属性 2、有下标属性 0 1 3、不能用数组的方法借调数组push方法Array.prototype.push.call(伪数组,“参数”);;[].join.call(伪数组,""-"");3.apply 参数:第一个参数是 this指向第二个参数是实参数组 哪怕只有一个实参也必须实参4.bind 给函数绑定一个this指向 原函数this指向不变 返回一个指定this的新函数格式:var newfn = fn.bing(obj);
6.4 函数也是对象1.Function.prototype == fn.__proto__;fn.__proto__.__proto__== Object.prototype;函数顶层 Funtion.__proto__ == Funtion.prototype
6.5 Function.prototype成员1.arguments 实参列表 伪数组 2.length 函数形参的长度3.name 函数名 函数定义以后不可更改4.caller 返回函数 位于哪个函数中
6.6 预解析6.6.1 铺垫 1. 字面量:(直接量) 从字面能看出值和类型 55 “55”true [] {}2.变量: 必须要声明才能使用的存数值的内存空间***浏览器可以直接字面量 而不需要提前声明6.6.2 作用 目的1.把变量和函数提升到作用域的顶端2.开辟存储空间 存储变量6.7.3.规则 1.全局1、将变量声明提升 赋值不提升 同名覆盖2、将函数声明 提升整个函数体 同名覆盖3、执行代码 执行过程中忽略所有声明 直接赋值2.函数 形成在函数执行前 执行结束释放空间1、将变量声明和形参提升 赋值不提升 同名覆盖2、将形参数和实参值相统一3、将函数声明 提升整个函数体 同名覆盖4、执行代码 执行过程中忽略所有声明 直接赋值
6.7 作用域与作用域链6.7.1 铺垫 :全局变量 :定义在全局的变量 全局都可以访问局部变量:定义的函数体内部的变量 只有在函数体内可以访问6.7.2.作用域概念作用域是一条规则 决定变量定义存储在哪里 查找变量时在自身作用域链上查找6.7.3.作用域链1、多层嵌套函数形成的链式关系2、作用 存储自身可访问的变量范围3、变量查找原则 现在自身作用域查找 查找不到在去自己是作用域链上查找4、当整个作用域链都没有时候1、如果是调用则报错2、如果是赋值操作 那么就在全局创建一个变量并赋值(隐式全局)
6.8 词法作用域6.8.1 又叫 静态作用域 在函数声明时作用域已经确定 跟函数的调用无关
6.9 递归函数1.概念 : 函数内部直接或者间接调用自己叫递归2.注意 : 递归一定要有出口[结束条件] 否则超出最大调用栈
6.10 闭包1. 概念 将函数A内部的函数B保存到A的外部形成闭包格式 当一个函数被保存到外部时一定产生闭包function fn1(){var num = 1;function fn2(){num++; }return f2;}var temp = fn1();2 作用 将函数内部的变量保存到函数外部使用3 内存问题 垃圾回收引用计数 当一个引用类型有零个指针指向的时候 系统会自动回收环境标记 进入环境是标记
7.正则表达式
7.1.正则创建7.1.1.概念 : 用于匹配规则的表达式7.1.2.作用 :字符串校验7.1.3.创建 7.1.3.1 构造函数 var reg = new RegExp(/d/,g);7.1.3.2 字面量 var reg = /^d/g;
7.2.元字符7.2.1 . 除了换行和回车以外的任意字符[^n]7.2.2 . 匹配 .7.2.3 d 所有的数字字符[0-9]7.2.4 D 所有的非数字字符[^0-9]7.2.5 w 所有的单词字符 [a-zA-Z0-9_]7.2.6 W 所有的非单词字符[^a-zA-Z0-9_]7.2.7 s 空字符 [t n 空格]7.2.8 S 非空字符[^tn]7.2.9 |或优先级最低 ()表达式优先级最高 []一个字符的范围7.2.10 [^]非 ^开始 $结束 /^abc$/精确匹配 必须是同一个单词7.2.11.量词* 0次或0次以上 {0,}+ 1次或1次以上 {1,}? 0次或者1次 {0,1}{n,m} 出现n到m次() $1 $2 表示表达式匹配到的项
7.3.正则匹配7.st(str);7.3.2.参数g 全局匹配 globali忽略大小写ignore
7.4.字符串方法7.4.place(//g,"""");7.5.正则提取str.match(reg) 返回数组
本文发布于:2024-01-27 17:36:29,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063481861682.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |