JavaScript-day17-个人学习笔记
一、String:字符串
1、什么是字符串:多个字符组成的一个只读的集合(数组)
凡是数组对象中,不修改原对象的API,字符串都能用!
比如:slice,indexOf
2、内置对象:ES标准中已经定义好的,由浏览器厂商已经实现的对象
11个:String Number Boolean Array Date Math RegExp Error Function Object Global
3、包装类型:临时封装原始类型数据,提供对原始类型数据的操作方法
3种:String Number Boolean(不能new)
为什么使用包装类型:原始类型的数据本来没有任何方法,当程序中使用原始类型调用方法时,程序会自动创建包装类型对象封装该数据,函数调用完,包装类型自动释放。
4、String API——所有API不可能直接修改原字符串
(1)转义字符:当字符串的内容和程序的特殊符号冲突时或字符串中包含功能字符时,都用\转义字符的意义
(2)大小写转换:
都转大写:str.toUpperCase();
都转小写:str.toLowerCase();
(3)获取指定位置字符:3种:
a、str[i]——倒数第二个:str[str.length-2]
b、str.charAt(i);
c、str.charCodeAt(i);返回字符的unicode号
(4)查找关键字的位置:2种:starti默认都是0
a、var i=str.indexOf("kword"[,starti]);如果找不到,返回-1
b、var i=str.lastIndexOf("kword"[,starti]);查找starti位置左侧第一次出现的关键字
(5)获取子字符串:3种:
a、var subStr=str.slice(starti[,endi+1])
b、var subStr=str.substring(starti[,endi+1]);不支持负数参数
c、var subStr=str.subStr(starti,取几个);
(6)分隔字符串:var arr=str.split("分隔符"),arr中以数组形式保存每段子字符串
何时使用:今后只要分段处理字符串时都要先分隔,再遍历
固定套路:将字符串切割为字符数组
(7)模式匹配:按照规则查找或替换字符串中的子内容
查找:2种:
a、只能从开始位置,找第一个匹配的关键字var i=str.search(/kword/i);
何时使用:仅判断有没有关键字时
str.search vs str.indexOf
search专门用于模式匹配
indexOf不支持模式匹配
b、获得所有关键字的内容,或个数:
var arr=str.match(/kword/ig)
arr中保存了所有关键字的内容
arr.length表示匹配的关键字的个数
*如果没有找到,返回null*
*match无法获得关键字的下标位置*
(8)替换:var newStr=str.replace(模式,"替换内容")
二、正则表达式:专门规定字符串中字符*格式规则*的表达式
何时使用:只要定义字符串格式规则,都用正则表达式
最简单的正则:一个关键词的原文,就是最简单的正则
1、备选字符集:规定某一位字符可选的备选文字列表
语法:[备选字符列表]
强调:无论备选字符集中由有多少字符,都必须且只能选一个,一个[]只代表1位字符!
^:除了xxx之外,都行
2、-:如果备选字符连续,可用-表示"到"
3、预定义字符集:专门表示常用的连续的字符集
\d-->[0-9]:1位数字
\w-->[0-9a-zA-Z]:1位数字,字母或下划线
\s-->[空字符]:代表一位空字符:空格,Tab符
.:除了换行外,其他所有的字符
\D,\W,\S-->除了\d,\w或\s的其他所有的字符
4、量词:规定一个字符集出现的次数:2种
明确数量:3种:
a、{min,max}:最少min位,最多max位
b、{min,}:至少min位
c、{n}:必须n位
身份证号:至少15数字/2位数字/最后一位数字或X x;后三位可有可无,但最多出现1次
\d{15}(\d{2}[0-9xX])?
不确定数量:3种:
a、?-->{0,1}:可有可无,最多一次
b、*-->{0,}:可有可无,多了数量不限
c、+-->{1,}:至少一次,多了数量不限
手机号:+86或0086 可有可无,最多1次/空格可有可无,多了数量不限/1/从3,4,5,7,8选一个/最后必须是9位数字
(\+86|0086)?\s*1[34578]\d{9}