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)工厂模式
今天学的知识点感觉还好,逻辑题有意思。
评论