4、正则表达式、本地存储

一、正则表达式

1、定义

  • 用事先定义好的一些特定字符,这样的字符组合,组合成一个“规则字符串”

2、正则的组成

特殊字符

  • 字母、数字、下划线、中文、特殊字符…

元字符(常用)

  • 1、\d 匹配至少有一个数字
var reg = /\d/  //字面量创建
var inputObj = document.getElementById('user')
inputObj.onblur = function () {
  console.log(reg.test(input.value))
}
  • 2、\D 匹配至少有一个不是数字的字符
var str = '2 jdjfjjs哈哈'
var reg = /\D/
console.log(reg.test(str))//true
  • 3、\w 匹配至少一个字母或数字或下划线
var str = '前端_8A%$^%^&*'
var reg = new RegExp(/\w/)
console.log(reg.test(str))//true
  • 4、\W 匹配至少有一个不是字母,数字,下划线
var reg = new RegExp(/\W/)
console.log(reg.test('23A D__D汉字'))//true
  • 5、\s 匹配至少有一个空白符
var reg = new RegExp(/\s/)
console.log(reg.test('23AD__   D汉 字'))//true
  • 6、\S 匹配至少一个不是空白符的字符
var reg = /\S/
console.log(reg.test(' 5     '))//true
  • 7、. 匹配至少有一个非换行符
var reg = /./
console.log(reg.test('\n\n\n\n %  \n\n'))//true
  • 8、^ 表示匹配行首的文本(以谁开始)
var reg = /^2/
console.log(reg.test('2iidfkjdf5454'))//true
var reg = /^ABC/
console.log(reg.test('ABCiidfkjdf5454'))//true
var reg = /^\d/   //至少有一个数字开头
console.log(reg.test('210ABCiidfkjdf5454'))//true
var reg = /^\S/   //开头至少有一个空白符
console.log(reg.test('210ABCiid fkjdf5454'))//true
  • 9、$ 表示匹配行尾的文本(以谁结束)
var reg = /2$/
console.log(reg.test('2iidfkjdf54542'))//true
var reg = /^2$/
console.log(reg.test('2'))//true
var reg = /^\d$/
console.log(reg.test('6'))//true

限定符

  • 1、* 重复零次或更多次\d*
    /^ab*$/:表示一个字符串有一个a后面跟着零个或若干个b。
var reg = new RegExp(/^ab*$/)
console.log(reg.test('abbbbb'))//true
  • 2、+ 重复一次或更多次\d+
var reg = new RegExp(/\d+/)
console.log(reg.test('a123213'))//true
var reg = new RegExp(/ab+/)
console.log(reg.test('bbbbbbbbaab'))//true
var reg = new RegExp(/^xy+/)
console.log(reg.test('xy前端9898前9前99'))//true
  • 3、? 重复零次或一次
    /^ab? / :表示一个字符串有一个 a 后面跟着零个或者一个 b ( 备注:添 加 和 /:表示一个字符串有一个a后面跟着零个或者一个b (备注:添加^和 /:表示一个字符串有一个a后面跟着零个或者一个b(备注:添)
console.log(reg.test('xy'))
  • 4、{n} 至少重复n次
var reg = /u{5}/
console.log(reg.test('xuuuuuy'))//连续5次
var reg = /\s{3}/
console.log(reg.test('   xuuusssuuy'))//以三个空格
  • 5、^{n}$ 必须重复n次
var reg = /^u{5}$/
console.log(reg.test('uuuuu'))//true
  • 6、{n,m} 重复n到m次
var reg = /^A{2,7}$/
console.log(reg.test('AA'))//true
  • 7、匹配全数字
var reg = /^\d+$/
console.log(reg.test('044635432132132101'))//true

其他符号

  • 1、[ ]字符串用中括号括起来,表示匹配其中的任一字符, 相当于或的意思 [0-9]
var reg = /[ab]/
console.log(reg.test('2545ab'))//true
var reg = /[0-9]/
console.log(reg.test('SDSD5823165722SD'))//true
// 匹配全数字
var reg = /^[0-9]+$/
  • 2、\ 转义符: \的用法 \ 主要是用法是在正则表达式中的特殊符号转换为它本身的意思
// 匹配小数
var reg = /^\d+\.\d+$/
var reg = /^\d+[.]\d+$/
console.log(reg.test('5.36'))
  • 3、| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱
// 匹配正负小数   5123.36   -5.36   +5.23
var reg = new RegExp(/^\d+\.\d+$|^[-]?[0-9]+\.[0-9]+$/)
console.log(reg.test('-93.89'))
  • 4、匹配字母
var reg = /[a-z]/
var reg = /[A-Z]/
var reg = /[A-Za-z]/
console.log(reg.test('542SDSDrtrtSDSGR$TRGCV4'))

3、正则表达式的应用(3个)

匹配:test()

提取:match()

g:全局匹配 i:忽略大小写 gi:全局匹配+忽略大小写

  • match():提取字符串中的字符,返回一个数组 字符串.match(子字符串) 字符串.match(正则表达式)
var str = 'one 1005 2 tWO222 3 three 4fOur'
// 提取2
console.log(str.match('2')) //1个
console.log(str.match(/2/)) //1个
console.log(str.match(/2/g)) //['2', '2', '2', '2']
console.log(str.match(/o/gi)) //['o', 'O', 'O']

替换:replace(old,new)

var str = 'one 1005 2 tWO222 3 three 4fOur'
//one 1AA5 2 tWO222 3 three 4fOur
console.log(str.replace('0', 'A').replace('0', 'A'))
console.log(str.replace(/0/g, 'A'))//one 1AA5 2 tWO222 3 three 4fOur

4、创建正则表达式对象

字面量创建: var 变量 = /正则特定字符或者组合/

var reg = /\d/  //字面量创建

构造函数创建: var 变量 = new RegExp (/正则特定字符或者组合/)

var reg = new RegExp(/\d/) //构造函数创建

二、HTML5的web存储

  • localStorage 和sessionStorage

localStorage:存储没有时间限制,需要手动清除本地数据

1、length:存储数据的个数

console.log(localStorage.length)

2、setItem(key,value)存储数据

document.getElementById('save').onclick = function () {
localStorage.setItem('name', '小花')
localStorage.setItem('age', '18')
localStorage.setItem('sex', false)
console.log(localStorage)
}

3、getItem(key);通过了key获取value

document.getElementById('get').onclick = function () {
  console.log(localStorage.getItem('age'))
}

4、removeItem(key);删除单个数据

document.getElementById('remove').onclick = function () {
  localStorage.removeItem('name')
  console.log(localStorage)
}

5、clear()删除所有数据

document.getElementById('clear').onclick = function () {
  localStorage.clear()
  console.log(localStorage)
}

6、得到某个索引的key:localStorage.key(index);

  • 通过数字获取第几个key
console.log(localStorage.key(0))
console.log(localStorage.key(1))
console.log(localStorage.key(2))

sessionStorage:浏览器关闭后,数据自动清除

  • API与localStorage相同

三、本地存储练习

//---直接写 οnclick="add();  下面就不用获取-----------
<button id="add" onclick="add();">新增记录</button>
<scsript>
//获取元素
var result = document.getElementById("result")//输出表格或者文本
dataShow()//先调用  没有数据显示null
// 2、新增记录
function add() {
    var siteName = document.getElementById("siteName")//网站名
    var siteValue = document.getElementById("siteValue")//网址
    localStorage.setItem(siteName.value, siteValue.value)//存储key  value
    alert("添加成功!")
    console.log(localStorage);
    dataShow()//添加数据以后还要调用 显示到表格
}
// 3、查找网站
function search() {
    var searchName = document.getElementById("searchName").value//网站名value值
    var wangzhi = localStorage.getItem(searchName)//网址的value值
    text.innerText = searchName + "的网址是:" + wangzhi //显示查出来的网址
}
// 1、表格或者文字显示
function dataShow() {
    console.log(localStorage);
    if (localStorage.length == 0) {//如果没有数据
        result.innerText = "数据为空......"
    } else {
        var str = "<table border='1'><tr><td>key</td><td>value</td></tr>"
        for (var i = 0; i < localStorage.length; i++) {//tr的个数与localStorage.length的个数一样
            str += "<tr><td>" + localStorage.key(i) + "</td><td>"+localStorage.getItem(localStorage.key(i))+"</td></tr>"    
        }
        str += "</table>"
        result.innerHTML=str//最后把str给result
    }
}
</script>

四、cookiessessionStoragelocalStorage解释及区别?

image-20240228151633986

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/419186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

东莞IBM服务器维修之IBM x3630 M4阵列恢复

记录东莞某抖音电商公司送修一台IBM SYSTEM X3630 M4文档服务器RAID6故障导致数据丢失的恢复案例 时间&#xff1a;2024年02月20日&#xff0c; 服务器品牌&#xff1a;IBM System x3630 M4&#xff0c;阵列卡用的是DELL PERC H730P 服务器用途和用户位置&#xff1a;某抖音电…

新品齐发!小牛电动打造全场景高端化产品阵列!

2 月 29 日&#xff0c;全球智能城市出行品牌小牛电动发布“新世代性能旗舰”电摩NX、电自NXT&#xff0c;以及“全场景智驾越野电摩”X3三款新品。同时&#xff0c;与知名体育电竞俱乐部——JDG京东电子竞技俱乐部携手&#xff0c;打造“英雄的联盟”超级形象&#xff0c;引领…

文件误删除怎么恢复?盘点4个有效方法!

“我有一些很重要的工作文件保存在电脑上了&#xff0c;但是刚刚操作的时候却发现有些文件被误删了。有什么简单的误删文件恢复方法吗&#xff1f;” 在日常生活和工作中&#xff0c;我们可能都需要在电脑上保存各种各样的文件。如果在操作时误删比较重要的文件&#xff0c;很多…

进阶了解C++(4)——多态

在上篇文章中&#xff0c;简单的介绍了多态中的概念以及其相关原理。本文将针对多态中其他的概念进一步进行介绍&#xff0c;并且更加深入的介绍关于多态的相关原理。 目录 1. 抽象类&#xff1a; 2. 再谈虚表&#xff1a; 3. 多继承中的虚函数表&#xff1a; 1. 抽象类&am…

Mybatis-Plus介绍

目录 一、Mybatis-Plus简介 1.1、介绍 1.2、特性 1.3、架构 1.4、Mybatis-Plus与Mybatis的区别 二、快速入门 2.1、首先创建数据库mybatis-plus 2.2、创建user表 2.3、插入数据 2.4、创建Spring-Boot项目 2.5、添加依赖 2.6、连接数据库 一、Mybatis-Plus简介 1.1、…

Springboot项目集成短信验证码(超简单)

操作流程 注册验证码平台创建验证码模版开始集成&#xff08;无需引入第三方库&#xff09; 注册并登陆中昱维信验证码平台 获取AppID和AppKey。 创建验证码模版 创建验证码模版&#xff0c;获取验证码模版id 开始集成 创建controller import org.springframework.web.bi…

跨域引起的两个接口的session_id不是同一个

来源场景&#xff1a; RequestMapping(“/captcha”)接口设置了SESSION_KEY&#xff0c;也能获取到&#xff0c;但是到了PostMapping(“/login”)接口就是空的&#xff0c;由于跨域导致的两个session_id不是同一个 /*** 系统用户 前端控制器*/ Controller CrossOrigin(origins…

自定义el-dialog的样式

实现效果&#xff1a; 样式代码如下&#xff1a;&#xff08;可以写在common.scss文件夹中&#xff09; .el-dialog__header {padding: 16px 20px;border-bottom: 1px solid #DCDFE6;display: flex;align-items: center;.el-dialog__title {font-size: 16px;position: relativ…

MySQL(基础篇)——事务

一.事务简介 事务是一组操作的集合&#xff0c;他是一个不可分割的单位&#xff0c;事务会把所有的操作作色一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 默认MySQL的事务是自动提交的&#xff0c;也就是说&#xff0c…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统&#xff0c;虚拟机版本为VMware Workstation 16 pro&#xff0c;Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

spring-boot static-path-pattern如何配置生效

WebMvcAutoConfiguration AbstractUrlHandlerMapping ResourceHttpRequestHandler springboot 版本 2.3.9.RELEASE 一、如何用 yaml配置 spring:mvc:static-path-pattern: /doctest/**resources:static-locations: classpath:/doc/资源文件配置 访问路径 二、原理 第一个问…

幻兽帕鲁联机服务器搭建

幻兽帕鲁联机服务器搭建 开通云服务器 云主机购买|香港云服务器|香港云主机|美国云服务器|弹性云主机租用尽在-特网科技 建议选择4核心 16G内存 10M带宽&#xff0c;可满足6-15人游玩 下载安装脚本 windows系统: 下载 http://downinfo.myhostadmin.net/palserver/install…

List集合的Stream流式操作实现数据类型转换

问题现象&#xff1a; 最近在项目中&#xff0c;有一些逻辑想用List集合的Stream流式操作来快速实现&#xff0c;但由于之前没做好学习笔记和总结&#xff0c;导致一时间想不起来&#xff0c;只能用本方法来解决&#xff0c;如下&#xff1a; 可以看出来代码量是比较冗长的&…

day57 集合 List Set Map

List实现类 List接口特点&#xff1a;元素有序 可重复 Arraylist 可变数组 jdk 8 以前Arraylist容量初始值10 jdk8 之后初始值为0&#xff0c;添加数据时&#xff0c;容量为10&#xff1b; ArrayList与Vector的区别&#xff1f; LinkList&#xff1a;双向链表 优点&#xff1…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景&#xff1a; 我想在服务器上传一个文件uniquC.csv&#xff0c;但是服务器说我没有权限 解决方案&#xff1a; 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时&#xff0c;我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

软件设计师软考题目解析10 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…

C++基于多设计模式下的同步异步日志系统day1

C基于多设计模式下的同步&异步日志系统day1 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&am…

死记硬背spring bean 的生命周期

1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象&#xff0c;在这个对象没有任何引用的时候&#xff0c;会被gc给回收掉。而对于spring而言&#xff0c;它本身存在一个Ioc容器&#xff0c;就是用来管理对象的&#xff0c;而对象的生命周期也完全由这个容…

67-箭头函数,new.target,模版字符串

1.箭头函数 ES6新增语法&#xff0c;用来简化函数的书写()>{} <script>//箭头函数的基本使用let a (a,b)>{return ab;}let c a(1,2);console.log(c);//输出3</script> 2.简写形式&#xff1a; 2.1参数&#xff1a;只有一个参数时可以省略小括号a>{}&…

Java Stream 流?看这一篇就够了!

大家好&#xff0c;从我开始写博客也过去半年多了&#xff0c;c 站陪我走过了学习 Java 最艰苦的那段时光&#xff0c;也非常荣幸写的博客能得到这么多人的喜欢。 某一天当我开始学习分布式的时候突然想到这可能是补充 Java 知识拼图的最后几块部分了&#xff0c;为了将前面的知…