提示:记录一些知识点
前言
提示:有人请假问题
问题
知识点
1.
document.referrer来访页面的url
window.location.href 当前页面的url
所以第一行是用来访问当前页面的url
2.
RegExp正则表达式
- reg.test(str);
判断str字符串是不是包含这个reg片段 - str.match(reg)
把匹配的reg串给返回
igm修饰符
- i 执行对大小写不敏感的匹配。
- g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止
- m 执行多行匹配
3.
RegExp对象的exec方法应用
用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
语法:
rgExp.exec(str)
rgExp:必选项。包含正则表达式模式和可用标志的正则表达式对象。
Str:必选项。要在其中执行查找的 String 对象或字符串文字。
如果exec方法没有找到匹配,则返回 null。
如果找到匹配,则返回一个数组,并且更新全局RegExp对象的属性,以反映匹配结果。
数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志(g)的match方法。
如果为正则表达式设置了全局标志,exec从以lastIndex的值指示的位置开始查找。
如果没有设置全局标志,exec忽略lastIndex的值,从字符串的起始位置开始搜索。
exec方法返回的数组有3个属性,分别是 input、index和lastIndex。
Input属性包含了整个被查找的字符串。
Index属性包含了整个被查找字符串中被匹配的子字符串的位置。
LastIndex属性包含了匹配中最后一个字符的下一个位置。
4.用JavaScript来截取地址栏参数:
const reg = new RegExp(‘(^|&)‘ + query + ‘=([^&]*)(&|$)‘)
getQuery (query) {
// 创建一个含有目标参数的正则表达式对象
const reg = new RegExp('(^|&)' + query + '=([^&]*)(&|$)')
// 匹配目标参数
const res = window.location.search.substr(1).match(reg) || window.location.hash.substring((window.location.hash.search(/\?/)) + 1).match(reg)
if (res != null) {
return decodeURIComponent(res[2]) //输出返回值!
}
}
const reg = new RegExp('(^|&)' + query + '=([^&]*)(&|$)')
//声明一个全局匹配,忽略大小写的正则 正则内容由regStr决定 g代表全局搜索,i代表忽略大小写 ignore case
1:const reg=new RegExp(regStr,"gi");
2:^name //匹配任何开头以name的字符串
//
3:'(^|&)' //匹配以&开头或者空白开头的字符串
4:'(^|&)' + query //匹配任何以&query开头 或者 以空白query开头的字符串
//本质上来说前面空白就是什么都没有,就是URL中某个参数
5:[^&] //匹配除了&以外的任意字符,就是一旦在出现了&,就是另外一个新的参数了,就不继续匹配
6:([^&]*) //匹配任意数量的 除了&以外的字符 如果query后面有&就停止匹配
7:(&|$) //同理,匹配任何以&结尾 或者 空白结尾的参数
8: ([^&]*)(&|$) //匹配以 & 开头之外的任意多个参数值,并且遇到&或者空白就停止
//遇到 & 说明到下一个参数了,也就是该参数在中间的情况,遇到 空白 说明没有值了,也就是该参数为最后一个参数
const reg = new RegExp('(^|&)' + query + '=([^&]*)(&|$)')
//匹配以 query= 开头或者以 query= 开头,中间为任意多个除了&以外的字符,一旦遇到& 或者空白 就停止匹配
使用范例
this.test = utils.getQuery('url')
//通过utils工具类下封装的获取url参数方法getQuery来获取里面的参数 以url开头或者&url开头...