menu
more_vert
JS 8

作者:dayu

1. ***String

什么是:

***内置对象:

***包装类型:

字符串API

1. 什么是: 多个字符组成的只读字符数组

vs 数组: 下标i

length

slice() concat

不同: 数组中凡是直接修改原数组的API,字符串都不能用!

2. 内置对象: ES标准中规定的,浏览器厂商已经实现的现成的对象和API

11个: Number String Boolean

Array Date RegExp Math

Error

Function Object

Global(浏览器中被替换为window)

3. 包装类型对象:

什么是: 专门封装基础类型的值,并提供操作基础类型值的API的对象

为什么: 基础类型的值,本身不包含任何API功能

何时: 只要试图对基础类型的值调用API时,都会自动创建对应类型的包装类型对象来封装基础类型的值。

调用后: 包装类型对象,自动释放!

比如: var n=345.678;

n.toFixed(2)=>345.678.toFixed(2)

=>new Number(345.678).toFixed(2)

4. String的API:

***所有字符串API都无权修改原字符串,只能返回新字符串!

大小写转换: 将字符串中所有英文字母转为统一的大小写

何时: 只要不区分大小写时,都要先转为一致的大小写,再判断。 比如: 用户名,邮箱地址,验证码

如何: str.toUpperCase() //都转大写

str.toLowerCase() //都转小写

获得指定位置的字符: str[i]

var char=str.charAt(i);

获得指定字符的unicode号:

var unicode=str.charCodeAt(i); //省略i,默认是0

将unicode号反向转回文字

var char=String.fromCharCode(unicode);

选取子字符串: str.slice(starti,endi+1)

str.substring(starti,endi+1) 不支持负数参数

str.substr(starti,n): 选取starti开始的n个元素

1. ***String API

查找关键词

替换

切割字符串

2. *****正则表达式

1. 查找关键词: 4种

1. 查找一个固定的关键词出现的位置:

var i=str.indexOf("关键词",fromi)

在str中,从fromi位置开始查找"关键词"的位置

如果找到,返回关键词所在位置的下标

找不到,返回-1

简写: 省略fromi,默认从0开始

专门找最后一个关键词的位置:

var i=str.lastIndexOf("关键词")

在str中,找最后一个关键词出现的位置

问题: 只能找第一个关键词

解决: 正则表达式:

2. 使用正则表达式查找指定的一类关键词的位置:

按模式匹配:

var i=str.search(/正则表达式/);

在str中查找第一个符合正则表达式要求的关键词的位置

返回值: 找到的关键词的下标, 如果找不到返回-1

何时: 仅判断是否包含敏感词时,就用search

如果返回不是-1,说明包含,否则说明没找到

忽略大小写: /正则/i

问题: 1. 只能获得第一个的位置,不能获得所有敏感词

2. 只能返回位置,不能返回内容

3. 使用正则表达式查找指定的一类关键词的内容:

var arr=str.match(/正则/ig);

默认只找第一个,找所有,必须加g

返回值: 所有敏感词组成的数组

没找到返回null!

强调: 如果一个API有可能返回null,就必须先判断不是null,再使用!

arr.length 表示找到的关键词个数

问题: 仅返回所有关键词的内容,无法返回每个关键词位置

4. 即找所有关键词内容,又找每个关键词的位置?

reg.exec();

2. 替换: 将字符串中所有敏感词替换为新内容

基本替换:

str=str.replace(/正则/ig,“替换值”);

4. *****正则表达式:

什么是: 专门定义一类字符串统一规则的表达式

何时: 1. 按照指定规则模糊查找一类关键词时

2. 表单中验证输入项的格式

如何: 语法:

1. 最简单的正则其实就是关键词原文

2. 字符集: 规定字符串中一位字符可用的备选字符列表

何时: 只要某一位字符,有多个备选字时

如何: [备选字符列表]

强调: 一个字符集只能匹配一位字符

简写: 如果备选字符列表是连续的,就可用-省略中间字符

一位字母: [a-zA-Z]

一位数字: [0-9]

一位汉字: [\u4e00-\u9fa5]

特殊: 除了: [^排除的字符列表]

强调: ^必须写在[开头]

3. 预定义字符集: 4个:

\w 一位字母数字或_ =>[a-zA-Z0-9_]

\d 一位数字 => [0-9]

\s 一位空字符: 空格,Tab,...

. 一位任意字符

强调: 一个预定义字符集仅匹配一位字符

只有规则和预定义字符完全一致时,才能使用

如果不一致, 依然需要手写普通字符集

字符集仅控制每个字符的内容

4. 量词: 专门固定字符出现的次数

有明确数量边界:

字符集{min,max} 规定字符集必须最少出现min次

最多max次

字符集{min,} 最少min次, 多了不限

字符集{n} 必须n次

没有明确数量边界:

字符集? 可有可无,最多一次

字符集* 可有可无,多了不限

字符集+ {1,}

强调: 仅修改相邻的前一个字符集

5. 选择和分组:

分组: 将多个字符集分成一组:

何时: 如果希望一个量词同时修饰多个字符集时

比如: 我(了个?)?去: 我去 我了去 我了个去 我个去X

regexper.com

选择: 其实就是"或" 规则1|规则2

只要匹配任意一个规则即可

(微|w(ei)?)\s*(信|x(in)?)

手机号:

(\+86|0086)? +86或0086 可有可无,最多一次

\s* 空字符 可有可无,多了不限

1

[34578] 34578中挑一个

\d{9} 9位数字

(\+86|0086)?\s*1[34578]\d{9}

邮箱:

字母/数字或_ 一次以上

@

字母或数字 2位以上

(.和 字母或数字 2到3位) 1到2次

\w+@[a-zA-Z0-9]{2,}(.[a-zA-Z0-9]{2,3}){1,2}

JS 8

原文地址:http://www.cnblogs.com/Hale-Proh/p/7199630.html