Storage存储-正则表达式(coderwhy版本)(一)

简介: Storage存储-正则表达式(coderwhy版本)

Storage存储-正则表达式(coderwhy版本)

(掌握)Storage-Storage的基本使用和应用

认识Storage

  • WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式:
  • localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页重新打开时,存储的内容依然保留(cookie)
  • sessionStorage:会话存储,提供的是本次会话的存储,在关闭掉会话时,存储的内容会被清除;
const token = "xiaoyu666"
const name = "xiaoyu"
const password = 123456
localStorage.setItem("token",token)
localStorage.setItem("name",name)
localStorage.setItem("password",password)
//成功保存token信息,这是将 内容 保存在本地

image.png

  • 但实际中通常是会进行判断本地是否有信息的,没有的话再去服务器获取
//获取本地的token
let token = localStorage.getItem("token")
if(!token){//判断本地是否有token
  console.log("没有token,从服务器获取");
  token = "token"
  //将服务器上的token放入本地
  localStorage.setItem("token",token)
}
//获取本地的账号密码
let username = localStorage.getItem("username")
let password = localStorage.getItem("password")
//判断本地是否有账号密码
if(!username || !password){
  console.log("让用户输入账号密码");
  //服务器获取账号密码
  username = "xiaoyu"
  password = "123456"
  //将服务器上的账号设置到本地
  localStorage.setItem("username",username)
  localStorage.setItem("password",password)
}

(掌握)Storage-local和session的使用

localStorage和sessionStorage的区别

  • 我们会发现localStorage和sessionStorage看起来非常的相似
  • 那么它们有什么区别呢?
  • 验证一:关闭网页后重新打开,localStorage会保留,而sessionStorage会被删除
  • 验证二:在页面内实现跳转,localStorage会保留,sessionStorage也会保留(就是不会开启新的页面),这个适合使用sessionStorage,而不是永久性存储
  • 验证三:在页面外实现跳转(打开新的网页),localStorage会保留,sessionStorage不会被保留

(掌握)Storage-Storage的常见方法补充

Storage常见的方法和属性(本地存储跟会话存储都有的)

  • Storage有如下的属性和方法:
  • 属性:
  • Storage.length:只读属性
    返回一个整数,表示存储在Storage对象中的数据项数量
console.log(Storage.length)


  • 方法:
  • Storage.key(index):该方法接受一个数值n作为参数,返回存储中的第n个key名称
  • Storage.getItem():该方法接受一个key作为参数,并且返回key对应的value
  • Storage.setItem():该方法接受一个key和value,并且将会把key和value添加到存储中

如果key存储,则更新其对应的值

  • Storage.removeItem():该方法接受一个key作为参数,并把该key从存储中删除
  • Storage.clear():该方法的作用是清空存储中的所有key
//如果有一个需要一直固定的数值在两个地方及以上的地方用到了,我们最好将这个数值抽取到一个常量里面,防止不小心没注意修改掉导致不一致
//(这里以本地存储为例子,会话存储也是一样的)
const ACCESS_TOKEN = "token"//抽取出来的常量一般大写
//常见的方法
localStorage.setItem(access_token,"xiaoyuToken");
console.log(localStorage.getItem(access_token));
//获取本地存储按索引顺序的key值
console.log(localStorage.key(0));
console.log(localStorage.key(1));
//删掉不需要的key
localStorage.removeItem(access_token)
//清空所有key
localStorage.clear()

(掌握)Storage-Cache类存储工具的封装

在进行这类操作的时候,我们会统一进行封装在一个文件里面,然后进行引用或者export导出、import导入

//文件1
class Cache {
  setCache(key,value){
    localStorage.setItem(key,value)
  }
  getCache(key){
    return localStorage.getItem(key)
  }
  removeCache(key){
    localStorage.removeItem(key)
  }
  clear(){
    localStorage.clear()
  }
}
const localCache = new Cache()
//文件2引入文件1
localCache.setCache("xiaoyu",666)

此时我们可能会觉得多此一举,为什么要这么做?直接用不好吗


但storage有个特点,那就是不能直接存储对象类型(复杂类型),但是我们又想要存对象类型,那这不就得自己来处理了吗

const userInfo = {//如果非要存的话,拿到的value也只是个类型
  name:"小余",
  nickname:"2002XiaoYu",
  level:20
}
localStorage.setItem("userInfo",userInfo)
console.log(first);

image.png

需要将对象转化为字符串类型,然后传入要取出的时候再从字符串转化为对象类型,那这个操作如果要每次使用都写一次的话,就太过繁琐了,而且重复代码量也会提升,最好的当然还是直接封装起来了,也能够额外扩展我们想要的很多操作

const userInfo = {
  name:"小余",
  nickname:"2002XiaoYu",
  level:20
}
localCache.setCache("userInfo",userInfo)//成功封装
console.log(first);
class Cache {
  setCache(key,value){
    if(!value){
      throw new Error("value必须有值")
    }
    if(value){
      localStorage.setItem(key,JSON.stringify(value))//进行转化为字符串
    }
  }
  getCache(key){
    const result = localStorage.getItem(key)
    if(result){//进行严谨判断,不然如果没有获取到值会获取到undefined,undefined进行转化会报错
      return JSON.parse(result)//字符串转化为对象
    }
  }
  removeCache(key){
    localStorage.removeItem(key)
  }
  clear(){
    localStorage.clear()
  }
}
const localCache = new Cache()

image.png

进一步修改成我们想要的,让我们自如的切换在local跟session之间

class Cache {
  constructor(isLocal = true){
    //storage不一定就是本地存储,也可能是会话存储,我们可以将控制这个的开关也交给我们把控
    this.storage = isLocal ? localStorage : sessionStorage
  }
  setCache(key,value){
    if(!value){
      throw new Error("value必须有值")
    }
    if(value){
      this.storage.setItem(key,JSON.stringify(value))//进行转化为字符串
    }
  }
  getCache(key){
    const result = this.storage.getItem(key)
    if(result){
      return JSON.parse(result)
    }
  }
  removeCache(key){
    this.storage.removeItem(key)
  }
  clear(){
    this.storage.clear()
  }
}
const localCache = new Cache()
const sessionCache = new Cache(false)

(理解)正则-正则表达式的理解和JS创建

什么是正则表达式?

  • 我们先来看一下维基百科对正则表达式的解释:
  • 正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念
  • 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串
  • 许多程序设计语言都支持利用正则表达式进行字符串操作
  • 简单概况:正则表达式是一种字符串匹配利器,可以帮助我们搜索、获取、替代字符串;
  • 在JavaScript中,正则表达式使用RegExp类来创建,也有对应的字面量的方式:
  • 正则表达式主要由两部分组成:模式(patterns)和修饰符(flags),也就是我们传入的两个参数
//1.匹配的规则pattern,填入RegExp第一个参数
//2.匹配的修饰符flags,填入RegExp第二个参数
const re1 = new RegExp("hello","i")//语法糖形式
const re2 = new /规则/修饰
const re2 = new /hello/i//字面量形式的正则

(理解)正则-正则表达式和普通字符串用法的对比

正则表达式的使用方法

  • 有了正则表达式我们要如何使用它呢?
  • JavaScript中的正则表达式被用于 RegExp 的 exec 和 test 方法;
  • 也包括 String 的 match、matchAll、replace、search 和 split 方法;

方法

描述

exec

一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)

RegExp实例方法

test

一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false

RegExp实例方法

match

一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null

字符串的方法

matchAll

一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)

字符串的方法

search

一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回-1

字符串的方法

replace

一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串

字符串的方法

split

一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中
的 String 方法

字符串的方法

//1.使用正则对象上的实例方法
let re1 = new RegExp()
let str = "hello world";
console.log(re1.test(str));//true
//2.使用字符串的方法,传入一个正则表达式
let message = "fdabc faBC dfABC AaaBc"
//需求:将所有的abc(忽略大小写),换成cba
const newMessage1 = message.replaceAll("abc","cba")//有局限性,fdcba faBC dfABC AaaBc
//i = 不区分大小写,g = 全局
const newMessage2 = message.replaceAll(/abc/ig,"cba")//fdcba fcba dfcba Aacba
console.log(newMessage1,newMessage2);
//需求:将字符串中数字全部删除
// `\d`表示数字类型,`+`表示一个或者多个
let num = "105 dd5 a5dfg diff666"
let num1 = num.replaceAll(/\d+/g,"")
console.log(num1);// dd adfg diff

(理解)正则-正则表达式的使用方式和方法

  1. 使用正则对象上的实例方法
    webpack -> loader -> test:匹配文件名
    正则 -> 拿到文件 -> loader操作
//1.1 test方法:检测某一个字符串是否符合正则的规则
const re1 = /abc/ig
const re2 = /^abc$/g
const message = "fdabc fa44BC df5ABC AaaBc66"
//检测某一个字符串是否符合正则的规则
if(re1.test(message)){
    console.log("你符合规则了,里面包含了大小写随意的abc")
}else{
    console.log("你里面没有包含大小写随意的abc")
}
//你符合规则了,里面包含了大小写随意的abc
const message2 = "abc"//可以再尝试一下这些其他的效果
if(re2.test(message)){
    console.log("你符合里面只有abc的规则了")
}else{
    console.log("你不符合里面只能有abc")
}
//你不符合里面只能有abc

正则案例

//让用户输入的账号必须是 不区分大小写的xiaoyu,不能有多余内容
    输入账号:<input type="text">
    <p class="tip"></p>
const inputEl = document.querySelector("input")
const tipEl = document.querySelector(".tip")
inputEl.oninput = function(){
  const value = this.value
  if(/^xiaoyu$/ig.test(value)){
    tipEl.textContent = "账号格式正确"
  }else{
    tipEl.textContent = "输入账号规范不符合,请重新输入"
  }
}

exec方法

使用正则执行一个字符串

const message = "fdabc fa44BC df5ABC AaaBc66"
const re1 = /abc/ig
console.log(re1.exec(message))//index是找到位置开头的索引

image.png

Storage存储-正则表达式(coderwhy版本)(二)https://developer.aliyun.com/article/1470356

目录
相关文章
|
6月前
|
存储 JavaScript Java
Storage存储-正则表达式(coderwhy版本)(二)
Storage存储-正则表达式(coderwhy版本)
85 0
|
6月前
|
Python
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r&#39;string&#39;`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
65 3
|
5月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
51 2
|
5月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
5月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
5月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
5月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
49 2
|
5月前
|
Python
Python正则表达式详解:掌握文本匹配的魔法
Python正则表达式详解:掌握文本匹配的魔法
|
5月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
41 0
|
6月前
|
数据安全/隐私保护 Python
Python进阶---正则表达式
Python进阶---正则表达式
24 2