javascript第十四天正则和闭包

正则和闭包

  1. 正则表达式/对象  RegExp  regularExpress

(1)     定义:是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符,及这些特定字符的组合,组成一个‘规则字符串’,这个规则字符串用来表达对字符串的一种过滤逻辑

(2)     正则表达式的创建

①    实例创建  new RegExp(“abc”)

1)       写法:new RegExp(规则字符串,修饰符)

②    字面量创建  /规则字符串/修饰符

(3)     正则的修饰符

①    i:ignore case   

1)       添加i修饰符  就会 在正则检测字符串的时候 忽略大小写

②    g:global

1)       添加g修饰符 就会执行 全局匹配  从字符串开头 匹配到结尾

(4)     正则的检索方式

①    Test

1)       正则对象.test(要检索的字符串)

2)       得到的结果 是 一个布尔值 如果检索成功 就是true 如果失败 就是false

3)       一般用于做判断

②    Exec

1)       正则对象.exec(要检索的字符串)

2)       得到的结果 如果成功 是一个伪数组 包含一些检索字符串的信息, 如果失败,得到的是null

③    Replace

1)       字符串.replace(正则表达式,用来替换的字符片段)

  1. 作用:使用正则 匹配字符串中的 字符部分 将匹配到的部分替换掉

④    Search

1)       字符串.search(正则表达式);

2)       作用:传入指定的字符片段或正则, 从而 获取 该字符片段(正则匹配到的字符片段)首次出现的下标  如果字符串中不包含执行字符片段 就返回-1

⑤    Match

1)       字符串.match(正则表达式)

2)       作用:和exec完全一样

⑥    Split

1)       字符串.split(/切割标识/) 

2)       作用:使用正则表达式 匹配字符串  将匹配到的字符片段 作为切割标识 进行切割

(5)     正则元字符   

①    .

1)       在正则中 . 表达的意思是  处理换行符之外的任意字符

2)       换行符:\n

②    [0-9]

1)       在正则中 [] 表达的意思是 在指定范围中即可

  1. 例如:[0-9] 所有的数字都可以成功匹配  [a-z] 匹配所有小写字母
  2. 范围可叠加  [0-9a-zA-Z]

③    [^0-9];

1)       在正则中 [^] 表示匹配在指定范围之外的字符

  1. 例如:[^0-9] 匹配所有非数字字符  [^a-z]匹配所有除了小写字母之外的字符 
  2. 范围可叠加

④    \d

1)       表示 数字

⑤    \D

1)       表示 非数字

⑥    \w

1)       匹配 字母 _ 数字 

2)       注意:不能匹配汉字

⑦    \W

1)       匹配的是 非 字母数字_  (只能匹配 特殊字符 和 汉字)

⑧    \s

1)       匹配 空格 及 空白字符(\n、\t....)

⑨    \S

1)       匹配非空格及空白字符

⑩    \b

1)       匹配单词的边界

11      \B

1)       匹配非单词边界

12      ^

1)       /^abc/

2)       上述正则表达式 表达的意思 就是 要匹配的字符串 必须以abc开头

13      $

1)       /abc$/

2)       表示 要匹配的字符串 必须以abc结尾

14      严格模式

1)       /^xxxx$/

2)       表示 严格匹配正则的内容 被匹配的字符串必须和正则的内容完全一样 才可以匹配成功

(6)     正则的量词

①    /x?/

1)       ?表示重复次数为0或1次 

②    /x+/

1)       +表示重复次数为至少1次

③    /x*/

1)       *表示重复次数为任意多次

④    (xyz)?

⑤    /x{n}/

1)       {n} 表示让x重复n次

⑥    /x{n,m}/

1)       {n,m} 表示让x重复至少n次 至多m次                      

(7)     正则其他知识点

①    正则或运算

1)       /a|b|c|d/

  1. 表示a、b、c、d都可以成功匹配

②    正则分组

1)       /(xyz)(tfb)/

  1. 小括号 就是 用来 实现正则分组的
  2. 每一个小括号中的内容 就是一个 分组

2)       在使用exec检索正则的时候 会先检索整个正则 之后 再使用每一个分组, 依次进行检索,并得到每一个匹配的字符片段

3)       我们可以使用RegExp构造函数的 $1,$2.....这些属性表示每一个分组匹配到的字符片段, 但是前提条件必须是正则表达式事先被检索过

4)       在replace中 $1 $2.....可以直接表示每一个分组匹配的内容

③    正则正向否定预查  费获取匹配

1)       /(?!xxxx)yyyy/

2)       表示 要求正则中 后续的内容 不能是xxxx

3)        

  1. 匿名函数

(1)     定义:没有名字的函数

(2)     写法:

①    function(){函数体代码}

②    注意:匿名函数 不能直接声明 但如果作为回调函数 则没有问题

(3)     优势

①    可以最大限度节省内存

②    普通函数 在 函数声明之后 就会将函数数据存入内存的堆区中 占用内存,

③    而匿名函数则会在函数调用的瞬间 将函数数据存入内存中 并在函数执行完之后 立即将内存中的匿名函数数据清除掉

  1. 闭包函数

(1)     定义:闭包就是能够读取其他函数内部变量的函数

(2)     闭包的写法定义:闭包就是 函数内部套函数 内层函数访问外层函数中的变量

(3)     闭包的优势:闭包中外层函数中声明的变量可以永久的存储在内存中,又能避免全局变量的污染

posted @ 2020-10-09 19:06  默默的1  阅读(242)  评论(0)    收藏  举报