9.15 冯娜

学习日志
一、正则表达式:

1、正则表达式:规定一个字符串中字符出现规律的规则,专门描述字符串中出现规则的表达式。例如,关键词的原文就是最简单的正则表达式。

2、什么时候使用正则表达式:当我们需要按规则模糊查找多种关键词时,或者当使用规则验证用户输入的格式时,我们就要使用正则表达式。
注意:为方便测试正则表达式,安装RegExpBuddy软件,专门用来测试正则表达式是否正确的软件。

3、字符集

(1)备选字符集[];

​ 常用字符集[a-z];[A-Z] 分别26位。

​ [0-9];匹配数字。例如:手机号;

​ [a-Za-z]:匹配一位字母;共52个。

​ [A-Za-z0-9]:匹配一位字母或数字;共62个。

​ [\u4e00-\u9fa5]:匹配一位汉字;共20902个。例如:车牌号;

[xyz]:匹配未包含的任意字符。

[a-z]:匹配任何不在指定范围内的任意字符。例如:

(2)预定义字符集:

\d:匹配一位数字[0-9]

\w:匹配一位数字、字母或_,等效于 [A-Za-z0-9_],

\s:匹配一位空字符,空格,制表符Tab等空白字符;例如:匹配一句英文中的每个空格。

.:通配符,匹配除换行符 \n 之外的任何单字符,换行符平时看不见,但却是存在的。例如:

(3)非打印字符:

\b:匹配单词的开始或结束。

\n:匹配一个换行符。

\s:匹配任何空白字符,包括空格、制表符、换页符等等。

\S:匹配任何非空白字符。

\t:匹配一个制表符tab。

\f:匹配一个换页符。

\v:匹配一个垂直制表符。

\r:匹配一个回车符。

4、数量词:

(1)什么时候使用:当需要规定一个字符集出现次数时,就需要使用量词;注意:默认仅修饰相邻的前一个字符集。

(2)分类:有明确数量边界:

​ 字符集{n}:字符集必须重复n次,不能多不能少。例如:电话号码验证:1[3-9]\d{9} 车牌号码验证:[\u4e00-\u9fa5][A-Z]·[0-9]{6}

​ 字符集{n,m}:字符集至少重复n次,最多重复m次,比如: \d{4,6} 表示4到6位数字。

​ 字符集{n,}:字符集匹配的内容至少重复n次,多了不限,比如:\d{6,} 表示6位以上数字。

​ 没有明确边界:

​ 字符集?:可有可无,最多一次,相当于{0,1};

​ 字符集*:可有可无,多了不限,相当于{0};

​ 字符集+:至少一次,多了不限,相当于{1};

​ \s+:匹配空格;

5、选择和分组:

提示:我们进行验证敏感词汇的时候,只能验证规定好的单个字符集,比如说,我们想验证 ” 草 “ ,那么此时,就只能验证 ” 草 “ ,这个敏感词,但是如果有人将其换为拼音,我们再去验证就失效了,即使我们再为其设定一个 ” cao “ 的拼音字符,也没法验证,因为我们的字符集只认识单个字符,而不认识一组拼音。

(1)选择:提示:在多个子规则中选其一匹配,当我们需要在多个子规则中选其一匹配时,就要用选择。

​ 规则:子规则1|子规则2

(2)分组:同时验证同音字或拼音;

​ “我” 字也可能是“卧”或“wo”;

​ 可能在中间加不确定个数的空字符;

6、指定匹配位置:

(1):匹配字符串开头

(2)$:匹配字符串结尾

(3)\b:单词边界

7、正则表达式修饰符:

(1)i:执行对大小写不敏感的匹配,意为忽略大小写。

(2)g:执行全局匹配(查找所有匹配,而不是在找到第一个匹配后停止)。

(3)m:执行多行匹配。

(4)s:特殊字符圆点 . 中包含换行符 \n。

8、常规正则:

(1)密码强度:?![a-z0-9]+$(?![A-Za-z]+\()[A-Za-z0-9]{6,8}\)

(2)邮箱验证:\w{0,19}@[0-9a-zA-Z]{1,13}.[com,cn,net]{1,3}$

注意:?!的意思是断言,表示匹配的字符串内容不为其中的内容,例如(?![a-zA-z]&)匹配的字符串中不能以字母结尾。

9、RegExp:

​ 封装一条正则表达式,并提供用正则表达式执行验证和查找的API。

(1)什么时候使用RegExp:当我们需要使用正则表达式验证字符串格式,或者需要即查找关键词内容,又查找关键词位置的时候,就需要使用RegExp。

(2)创建RegExp
var user=document.getElementById("user");
var btn=document.getElementById("btn");
// 正则表达式
var reg=/[3-9]\d{9}&/ig;
btn.onclick=function(){
var result=reg.test(user.value)
console.log(result);
}

(3)RegExp API:

​ var reg=/d/ig
​ var str="good goog study day day up";
​ var result=reg.exec(str)
​ console.log(result)
​ console.log(reg.lastIndex)

二、面向对象 oop

1、什么是面向对象:是一种思。对于程序中的模块我们都可以视为对象,对象都是由属性和方法组成的,属性可以理解为对象的特征,是静态的,方法可以理解为对象的行为,是动态的。我们先用对象保存现实中的一个事物的属性和方法,然后再按需访问对象中的保存的属性和方法。

2、为什么要使用面向对象:为了便于大量数据的维护和使用,今后,我们遇到的所有程序都要使用面向对象思想进行开发。

3、面向对象三大特征:

a、封装:创建一个对象,集中存储一个事物二点属性和功 能。复杂的问题简单化,只考虑功能和结果,不考虑过程 和内部结构。

b、继承:一个对象继承另一个对象的属性和方法。父对象中的成员,子对象无需重复创建,就可以直接使用。

c、多态:同一操作作用于不同的对象,可以有不同的解释,产生不同情况下的多种状态。即引用类型在不同情况下,表现出不同的状态。

4、封装(创建对象):将一个事物的属性和功能集中定义在一个对象中,事物的属性会成为对象的属性,即保存在对象中的普通变量,事物的功能会成为对象的方法,即保存在对象中的普通函数,其中对象的成员,属性和方法统称为成员。

5、为什么要封装:便于数据的维护。

6、什么时候使用封装:只要使用面向对象方式编程,都要先创建对象,再按需调用对象的方法执行操作。

7、访问对象成员:

(1)访问属性:对象.属性名

(2)调用方法:对象.方法名()

9、this:

(1)什么是this:每个函数自带的,可以自动引用正在调用当前方法的 “ . ” 前的对象的关键词。

(2)使用this的意义:不用this的普通变量,只能在作用域链中查找,无法进入对象中。一般对象的变量名可能变化,所以不能写死在对象的方法内部。

(3)什么时候使用this:只要希望去当前对象中找属性值时,就必须用this.属性名。

(4)this的指向

10、使用封装创建对象(三种方式)

(1)创建一个单独的对象

(2)使用构造函数

(3)工厂模式

​ 今天学的知识点感觉还好,逻辑题有意思。

评论