记录一些知识点 正则和url

提示:记录一些知识点

前言

提示:有人请假问题

问题

在这里插入图片描述

知识点

1.

document.referrer来访页面的url
window.location.href 当前页面的url
所以第一行是用来访问当前页面的url

2.

RegExp正则表达式

  1. reg.test(str);
    判断str字符串是不是包含这个reg片段
  2. str.match(reg)
    把匹配的reg串给返回

igm修饰符

  1. i 执行对大小写不敏感的匹配。
  2. g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止
  3. 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开头...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值