2/52
- 学到的知识
void 0 === undifined:为了防止被重构
Math.round(A) = a+.5|0
正则表达式总结
.() [] {} 的区别
参考:https://www.cnblogs.com/richiewlq/p/7307581.html#_label0
-
():组,用来提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串
-
[]:定义匹配的范围
比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符和数字。[\s表示空格或者号]
- {}: 表示匹配的长度
比如\s{3}表示匹配三个空格
match exec replace 的区别
字符串的正则方法有:match()、replace()、search()、split()
正则对象的方法有:exec()、test()
- replace:
- 普通的文本替换
var str="I love antzone and you?";
var reg=/an/g;
console.log(str.replace(reg,"java"));
- 当第二参数为函数的时候
replacement可以是具有特殊意义的美元$符号:
$美元符号功能罗列如下:
.$1、$2、…、$99:分别对应正则表达式第一个到第九九个子表达式匹配的内容。
replace()函数的第一个参数是正则表达式,并且执行的是全局匹配,那么第二个函数参数会多次被调用,每次被调用传递的参数,也是和regexp_global.exec(url)返回的数组的元素内容是相同的。
- match:
match的用法主要区分就是,正则表达式是否有全局标示g.
一.非全局匹配:
所谓非全局匹配,也就是使用g修饰符,具体参阅正则表达式 g 修饰符一章节。
此时,match方法最多只在字符串中成功匹配一次:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
返回的数组解析如下:
首先说明一下,数组元素的索引是从0开始的。
(1).第0个元素是匹配结果。
(2).第1个元素是第一个引用型分组匹配的子字符串,引用分组可以参阅正则表达式引用型分组一章节。
(3).第2个元素存放的是第二个引用型分组匹配的子字符串,依次类推。
返回的数组对象同时具有两个属性:
(1).index:返回匹配的子字符串起始字符在stringObject源字符串中的位置。
(2).input:返回stringObject源字符串。
二.全局匹配:
match方法执行全局匹配,获取所有可以匹配的子字符串:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
与非全局匹配的区别:
(1).不具有index和input属性。
(2).不具有引用型分组匹配的子字符串,数组元素仅包含匹配的所有子字符串。
var str="本站url地址是www.softwhy.com";
var reg1=/why/;
console.log(str.match(reg1));
>>> ["why", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
var str="本站url地址是www.softwhy.com";
var reg2=/why/g;
console.log(str.match(reg2));
>>> ["why"]
var str="本站url地址是www.softwhy.com";
var reg3=/w(h)y/;
console.log(str.match(reg3));
>>> ["why", "h", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
数组第一个元素是正则表达式中引用分组所匹配的内容。
var str="本站url地址是www.softwhy.com";
var reg4=/w(h)y/g;
console.log(str.match(reg4));
>>> ["why"]
- exec
它是正则的实例方法
一.非全局匹配:
非全局匹配模式,此方法的返回值与match方法完全一样。
完成一次匹配即可,然后将结果存入数组,如果匹配失败,方法返回null。
代码实例如下:
let str="antzone";
let reg=/n/;
console.log(reg.exec(str));
>>> ["n", index: 1, input: "antzone", groups: undefined]
代码分析如下:
(1).正则表达式采用非全局匹配。
(2).成功完成一次匹配,并返回一个数组。
(3).数组第一个元素是正则表达式匹配内容。
(4).index属性返回匹配内容的在原字符串的起始位置。
(5).input属性返回str原字符串。
let str="antzone";
let reg=/(n)(t)/;
console.log(reg.exec(str));
>>> ["nt", "n", "t", index: 1, input: "antzone", groups: undefined]
(1).数组第一个元素是正则表达式匹配内容。
(2).数组第二个元素是第一个子表达式匹配到的内容,第三个元素是第二个子表达式匹配到的内容,以此类推。
(3).index属性返回匹配内容的在原字符串的起始位置。
(4).input属性返回str原字符串。
二.全局匹配:
全局匹配模式下,此方法返回值依然是一个数组。
与全局匹配模式下的match方法不同的是,exec方法依然只在字符串中匹配一次。
当正则表达式具有全局标记g时,仍然时返回一个匹配及分组匹配的子串,当再次调用exec()时,它会从lastIndex属性所指示的字符处开始检索,即exec()自带遍历功能。