递归及正则表达式介绍
今日重点:
一、递归
1、什么是递归
递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数
注意:递归函数的作用和循环效果一样,由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件return 。
2、利用递归求1~n的阶乘
3、利用递归求斐波那契数列
4、利用递归遍历数据
二、浅拷贝和深拷贝
(1)浅拷贝 -- 浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用。
(2)深拷贝 -- 深拷贝拷贝多层, 每一级别的数据都会拷贝。
三、正则表达式概述
1、什么是正则表达式
正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。
2、正则表达式的创建
(1)通过调用RegExp对象的构造函数创建
new RegExp(/表达式/);
(2)利用字面量创建 正则表达式
var 变量名 = /表达式/
3、测试正则表达式
test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。
四、正则表达式中的特殊字符
1、边界符
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
(1)^表示匹配行首的文本(以谁开始)
(2)$表示匹配行尾的文本(以谁结束)
注:如果 ^和 $ 在一起,表示必须是精确匹配
2、字符类
(1)[] 方括号
表示有一系列字符可供选择,只要匹配其中一个就可以了
注:如果中括号里面有^ 表示取反的意思
元字符:由非字母字符组成,在正则中表示特殊的含义
| : 表示或的意思
(2)量词符
量词符用来设定某个模式出现的次数。
3、括号总结
(1)大括号{}:量词符. 里面表示重复次数
(2)中括号[]:字符集合。匹配方括号中的任意字符.
(3)小括号():表示优先级
4、预定义类
预定义类指的是某些常见模式的简写方式
5、正则表达式中的替换
1)正则替换replace
replace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式。
语法:stringObject.replace(regexp/substr,replacement)
第一个参数: 被替换的字符串 或者 正则表达式
第二个参数: 替换为的字符串
返回值是一个替换完毕的新字符串
2)正则表达式参数
语法:/表达式/[switch]
switch(也称为修饰符) 按照什么样的模式来匹配. 有三种值:
g:全局匹配
i:忽略大小写
gi:全局匹配 + 忽略大小写
补充:
(1)m 检测换行符 --- 能替换每一行第一个字符;(m能检测换行符 ,把\n后面字符作为单独一行使用)
console.log(str.replace(/^\w/gim, 'X'));
(2)
有关函数调用、this指向、严格模式以及闭包的介绍请点击a=href"https://www.cnblogs.com/kk199578/p/14223771.html"