javascript高级编程笔记03(正则表达式)
- 引用类型
- 检测数组
注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部也是调用join方法
检测数组方法又两种:
- l 在es5中新增了 Array.isArray()方法来检测是否是数组
- l 另一种是 value instanceof Array ,这种方法不适合在页面套用模板,因为这个是检测构造函数,套用两个模板会有两个构造函数所以会有问题,
- Push是把参数添加到数组末尾,pop方法则是从数组末尾移除
- Shift方法是移除数组第一项,unshift是把参数添加到数组第一项
- 数组排序有两个方法reverse和sort :
reverse方法会对反转数组项排序
sort方法会调用每个数组项的toString转型方法,然后比较得到的字符串以确定如何排序
function compare(value1,value2){ If(value1<value2){ return -1; }else if(value1>value2){ return 1; }else{ Return 0; } }
5.concat()方法可以基于当前数组中的所有项创建一个新的数组
具体说,这个方法会先创建当前数组一个副本,然后将接受到的参数添加到一个副本的末尾,最后返回新构建的数组,在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
6.slice 数组的截取,方法返回从该参数指定位置到结束位置之间的项不包括结束位置
7.splice方法:
- l 删除:可以删除任意输了的项,两个参数:要删除的第一项的位置和要删除的项数
- l 插入:可以向指定位置插入任意数量的项,3个参数:起始位置,要删除的项数,要插入的项
- l 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项
8.获取数组位置方法:
两个方法:indexOf()和lastIndexOf()这两个方法接收两个参数:要查找的项和表示查找起点位置的索引
indexOf是从头开始查找,lastIndexOf是后面开始查找
9.迭代方法
- l every:对数组中的每一项运行给定函数,如果改函数对每一项返回true,则返回true
- l Filter:对数组中的每一项运行给定函数,返回改函数会返回true的项组成的数组
- l forEach:对数组中的每一项运行给定函数,这个方法没有返回值、
- l map:对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
- l some:对数组中的每一项运行给定函数,如果该函数对任一项返回的true,则返回true
10.缩小方法
Es5还新增了两个缩小方法:reduce()和reduceRight()这两个方法接收两个参数:一个在每一项商调用的函数和作为缩小基础的初始值;
就是迭代数组的每一项将处理后返回。
var value=[1,2,3,4,5] Var sum=value.reduceRight(function(prev,cur,index,array){\ return prev*cur; }) alert(sum)//
- l RegExp类型(正者表达验证)
- g:表示全局模式
- i:表示不区分大小写
- m:表示多行模式
例如:
var re=null,i; for(i=0;i<10;i++){ re=/cat/g; re.test(“catastrophe”); } for(i=0;i<10;i++){ re=new RegExp(“cat”,”g”); re.test(“catastrophe”); }
第一个循环第一次调用test找到了cat,但第二次调用是从索引为3的字符开始,所以就找不到它了,由于会测试到字符串末尾,所以下次调用test就又从头开始
第二个循环使用RegExp构造函数在每次循环中创建正则表达式,因为每次迭代都会创建一个新的RegExp实例,所以每次调用test都会返回true。
- l RegExp 实例属性
- global:布尔值,表示是否设置了g标志;
- ignorecase:布尔值,表示是否设置了i标志;
- lastIndex:整数,表示开始搜索下一个匹配的字符串位置,从0开始
- multiline:布尔值,表示是否设置了m标志
- source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
- l RegExp实例方法
RegExp对象的主要方法是exec,该方法是专门为捕获组而设计的,exec接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null,返回数组虽然是Array的实例,单包含两个额外的属性:index和input,其中,index表示匹配的项在字符串中的位置,而input表示应用正则表达式的字符串,,在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串例如:
var text=”mom and dad and baby”; var pattern=/mom(and dad( and baby)?)?/gi; var matches=pattern.exec(text); alert(matches.index);// alert(matches.input)://mom and dad and baby alert(matches[0]); //mom and dad and baby alert(matches[1]);//” and dad and baby” alert(matches[2])//” and baby”
对于exec方法而言,即使在模式中设置了全局标志g,它每次也只会返回一个匹配项,在不设置全局标志的情况下,在同一个字符串商多次调用exec()将始终返回第一个匹配项信息,而在设置全局标志的情况下,每次调用exec则都会在字符串中继续查找新匹配项例如:
var text=”cat,bat,sat,fat”; var pattern1=/.at/; var matches=patter1.exec(text); alert(matches.index);// alert(matches[0]);//cat alert(pattern1.lastIndex);// matches=pattern1.exec(text); alert(matches.index);// alert(matches[0]);//cat alert(pattern1.lastIndex);// var pattern2=/.at/g; var matches=pattern2.exec(text); alert(matches.index);// alert(matches[0]);//cat alert(pattern2.lastIndex);// matches=pattern2.exec(text); alert(matches.index);// alert(matches[0])://bat alert(pattern2.lastIndex);//
- l RegExp构造函数属性
RegExp构造函数包含一些属性,这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近移除正则表达式操作而变化。
- input属性返回了原始字符串,
- leftcontext 属性返回了单词short之前的字符串,而rightcontext属性则返回了short之后的字符串
- lastMatch属性返回最近一次与整个正则表达式匹配的字符串,即short
- lastParen属性返回最近一次匹配的捕获组
javascript高级编程笔记03(正则表达式)的更多相关文章
- javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
- javascript高级编程笔记05(面向对象)
面向对象设计 es中有两种属性:数据属性和访问器属性 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性 [[Configurable]]:表示能否通 ...
- javascript高级编程笔记04(基本概念)
Function类型 Es5中规范了另一个函数对象的属性:caller,这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,这它的值为null function outer() ...
- javascript高级编程笔记02(基本概念)
ParseInt()函数: 由于Number函数在转换字符串时比较复杂而且不合理,我们常常转换字符串都用parseInt函数, Parseint函数规则: 忽略字符串前面的空格,直到找到第一个非空格字 ...
- javascript高级编程笔记06(面相对象2)
1) 构造函数模式 es中的构造函数可以用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外,也可以创建自定义的构造函数,从而定义自定义对象类型 ...
- python高级编程笔记一 正则表达式
事例
- JavaScript高级编程——Date类型
JavaScript高级编程——Date类型 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
- Android高级编程笔记(四)深入探讨Activity(转)
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...
- JavaScript高级编程———JSON
JavaScript高级编程———JSON < script > /*JSON的语法可以表达一下三种类型的值 简单值:使用与javas相同的语法,可以在JSON中表达字符串.数值.布尔值和 ...
随机推荐
- Android之HTTP网络通信--GET传递
说明 在做一个项目的时候难免会与服务器打交道,这里我就做一个小的Demo来简单的说明一下HTTP的使用,我这里使用的是图灵的接口,你也可以登陆www.tuling123.com进行申请.我使用的是上面 ...
- 利用C语言结构体模拟一个简单的JavaBean
利用C语言模拟一个Javabean 仅封装了,“无参构造函数”,“带参构造函数”,"toString方法" #include <stdio.h> struct User ...
- jquery循环遍历radio单选按钮,并设置选中状态
背景:自己在做项目过程中遇到的问题,现在记录一下. 需求:在ajax获取后台数据的之后,需要根据获取的数据对页面中的radio单选按钮进行选中状态设置 因为自身js功底欠佳,所以耽误了点时间,现在把方 ...
- kali Linux 文本图形界面切换遇到的怪问题
前段装了在Virtual Box上装一个Kali Linux玩,然后设为了开机进入文本界面,后来遇到无法上网的问题,网上找到解决方法,说是NAT地址转换和host-only双网卡顺序问题,按照网上的说 ...
- linux系统下搭建自己的web服务器
之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...
- [转]如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误
本文转自:http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html 问题概述: 在导入一个app后提示如下错误: “Error ...
- Thinkphp kindeditor 内容转义
参考了:[解决]ThinkPHP整合Html编辑器时出现自动转义的问题 遇到问题也是保存到数据库中的内容,会转义成“\"” 使用 $data['content'] = stripslashe ...
- HTTP层 —— 响应
1.创建响应 字符串&数组 所有路由和控制器都会返回一个被发送到用户浏览器的响应,Laravel 提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串,框架会将这 ...
- IOS之swift第一课基础代码
import Foundation //import Foundation 导入模块,专业术语也是导入 包,库的 意思. var str = "Hello World" //声明一 ...
- 暑假集训(2)第三弹 ----- 食物链(poj1182)
C - 食物链 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:10000KB 64bit ...