首页 > 代码库 > javascript基础---正则表达式和字符串,数组

javascript基础---正则表达式和字符串,数组

一、正则表达式

1.正则表达式的创建方法

var re=/abc/;

var re=new RegExp("abc")

var re=new RegExp(/abc/);

2.正则表达式语法

   2.1简单语法

     c表示一个或者多个普通字符

     {n}:表示匹配的次数

     {n,}:表示匹配的次数》=n

     {n,m}:表示匹配的次数》n,<m

      \:表示转义的次数

      ^:表示匹配输入的字符串的开始位置(在被匹配的字符串的开始部分 来匹配)

     $:表示匹配输入字符串的结束位置(在被匹配的字符串的结束部分  来匹配)

       *:》=0;

        +:>=1;

         ?:0或者1;当他和其他字符结合起来用的话就是 非贪心匹配。

下面这些都是匹配一个字符的:

        x|y:表示字符串匹配x或者Y 都算匹配成功

        [xyz]:表示能匹配 xyz中的任意字符 eg:匹配extend中的x.

        [^xyz]除了xyz之外的字符都能匹配。

        [x-z]能匹配x-z的任意一个字符 eg:[a-c]==[abc]

非贪心模式匹配

     就是在次数后面+?

正则表达式转义语法

    \b:匹配一个单词,但是这个单词必须位于边界  eg: /abc\b/   djfabcoweabc 边界上的abc匹配

    \B:匹配一个单词,而且要非边界上的单词

    \d:匹配0-9中的一个数字字符

    \D:匹配一个非数字字符,就是0-9以外的一个字符。

    \s:表示匹配一个空白字符。

    \S:表示匹配一个非空白字符。

    \w:表示匹配任何一个单词字符,表示数字字母 下划线。

    \W:表示匹配任何非单词字符 。

         

 3.创建一个正则表达式 后使用exec() 和test()匹配字符串        

exec():是匹配一个字符串后返回含有匹配的结果的数组。 text()是匹配一个字符串后返回是否匹配。

返回的数组中有:input:要匹配的字符串, index:屁屁额的子字符串开始的位置, lastIndex:被匹配的最后一个子串的位置

source:模式

 

test():返回真或者是假。

 

二.字符串

 字符串的相关函数:

charAt(i)   eg:str.charAt(i) 表示 返回str字符串的第i个字符。

charCodeAt(i)     str.charCodeAt(i)  表示返回str字符串的第i个字符的Unicode码值。

concat(str1,str2),   str3=concat(st1,str2);

indexOf(str,sub)    返回sub在str中的首次匹配的位置,如果没有找到则返回-1

lastIndexOf(str,sub), 在str中找到sub最后一次匹配的位置。

slice()  提取字符串中的一部分。

splice()   str.splice(" ,"),将字符串以,分开,返回数组。

match(re)   str.match(正则对象|模式), 查找正则对象,没有返回null  否则返回数组

replace(re,retext)  str.replace(reg,"abcd")  通过正则查找,如果找到就用abcd代替,返回替换后的副本。

search(re)  用来搜索一个re,有则返回他到字符串开始的距离,否则返回-1

三、数组

var arr=new Array();

arr.isArray()  判断arr是否是一个数组

常用函数:

(1)插入、删除

  pop()    var e=arr.pop()表示 尾部删除,返回当前的数值

  push()   var len=arr.push()表示尾部插入,返回当前的长度

  shift()    var e=arr.shitf()  表示头部删除一个元素,返回当前元素的值

  unshift()  var len=arr.unshitf()  表示在头部插入一个元素,返回当前的长度。

(2)遍历数组中的每一个元素(ECMAScript 5)  (fun1都可以保护三个元素,item index array,当前元素,下标,数组名)

  every(),对数组中的每个元素进行function测试,直到返回的结果值为假时结束。就不再执行了。 eg  arr.every(fun1).对arr数组中的元素从头开始带人fun1中执行,直到fun1的结果为false就不在执行了。

  filter(),类似every,会执行完所有的项,对返回值为真的项值放入数组中,最后返回这个数组

  forEach() 对数组中的每个元素调用 回调函数。 arr.forEach(fun1,this) 对arr 中的每个元素用fun1函数。this指向自己,可以省略。

  map()   和every()相似,数组中的每个元素调用测试函数,将每个项返回的结果都放在数组中,最后返回数组。 arr.map(fun1);

  some()  对数组中的每个元素进行function测试,直到返回的结果值为真时结束。

 reduce() 从左到右

reduceRight() 从右到左

 (3)数组链接

   concat()返回新数组

   join() 返回一个字符串

(4)找数组下标

   indexOf()用全等于 匹配得到的下标  arr.indexOf("a"),找到返回下标,否则返回-1

   lastIndexOf() 从后面往前匹配得到的下标

 (5)排序

    sort()进行排序。 默认情况下是升序排序,大写优于小写。 其中自定义排序中,-1表示第一个参数比第二个参数小。0表示两个参数相等。1表示第一个参数比第二个参数大。

    sortOn()表示按1个或者多个字段进行排序。

    reverse()反转一个数组

(6)数组克隆

  浅表克隆:就是当数组中的元素仍然是一个复杂数据类型时,不进行复制,只是建立一个指向原数据的引用;

深度克隆:是将原始数组中的引用类型读取数据然后从新填充数组。

javascript基础---正则表达式和字符串,数组