当前位置: 首页 > news >正文

3g免费网站我不想找之前做网站的续费

3g免费网站,我不想找之前做网站的续费,廊坊企业网站建设,中国五大网络运营商一、Storage 1.认识Storage WebStorage主要提供了一种机制#xff0c;可以让浏览器提供一种比cookie更直观的key、value存储方式#xff1a; localStorage#xff1a;本地存储#xff0c;提供的是一种永久性的存储方法#xff0c;在关闭掉网页重新打开时#xff0c;存…一、Storage 1.认识Storage WebStorage主要提供了一种机制可以让浏览器提供一种比cookie更直观的key、value存储方式 localStorage本地存储提供的是一种永久性的存储方法在关闭掉网页重新打开时存储的内容依然保留sessionStorage会话存储提供的是本次会话的存储在关闭掉会话时存储的内容会被清除 localStorage.setItem(name, local); sessionStorage.setItem(name, session);2.localStorage和sessionStorage的区别 我们会发现localStorage和sessionStorage看起来非常的相似。 那么它们有什么区别呢 验证一关闭网页后重新打开localStorage会保留而sessionStorage会被删除验证二在页面内实现跳转localStorage会保留sessionStorage也会保留验证三在页面外实现跳转打开新的网页localStorage会保留sessionStorage不会被保留 3.Storage常见的方法和属性 Storage有如下的属性和方法 属性 Storage.length只读属性 返回一个整数表示存储在Storage对象中的数据项数量 方法 Storage.key()该方法接受一个数值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 tokenconsole.log(localStorage.length) // 常见的方法: localStorage.setItem(ACCESS_TOKEN, whytoken) console.log(localStorage.getItem(ACCESS_TOKEN))// 其他方法 console.log(localStorage.key(0)) console.log(localStorage.key(1)) console.log(localStorage.removeItem(infoTab)) localStorage.clear()4.Storage工具封装 class Cache {constructor(isLocal true) {this.storage isLocal ? localStorage: sessionStorage}setCache(key, value) {if (!value) {throw new Error(value 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)!DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head bodyscript src./js/cache.js/scriptscriptlocalCache.setCache(sno, 111)// storage本身是不能直接存储对象类型的const userInfo {name: abc,nickname: def,level: 100,imgURL: http://github.com/abc.png}// localStorage.setItem(userInfo, JSON.stringify(userInfo))// console.log(JSON.parse(localStorage.getItem(userInfo)))sessionCache.setCache(userInfo, userInfo)console.log(sessionCache.getCache(userInfo))/script/body /html二、正则表达式 1.什么是正则表达式 我们先来看一下维基百科对正则表达式的解释 正则表达式英语Regular Expression常简写为regex、regexp或RE又称正则表示式、正则表示法、规则表达式、常规表示法是计算机科学的一个概念正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。许多程序设计语言都支持利用正则表达式进行字符串操作。 简单概况正则表达式是一种字符串匹配利器可以帮助我们搜索、获取、替代字符串 在JavaScript中正则表达式使用RegExp类来创建也有对应的字面量的方式 正则表达式主要由两部分组成模式patterns和修饰符flags const re1 new RegExp(hello, i) const re2 /hello/i2.正则表达式的使用方法 有了正则表达式我们要如何使用它呢 JavaScript中的正则表达式被用于 RegExp 的 exec 和 test 方法也包括 String 的 match、matchAll、replace、search 和 split 方法 // 创建正则 const re1 /abc/ig const message fdabc123 faBC323 dfABC222 A2324aaBc// 1.使用正则对象上的实例方法 // webpack - loader - test: 匹配文件名 // 正则 - 拿到文件 - loader操作 // 1.1.test方法: 检测某一个字符串是否符合正则的规则 // if (re1.test(message)) { // console.log(message符合规则) // } else { // console.log(message不符合规则) // }// 1.2.exec方法: 使用正则执行一个字符串 // const res1 re1.exec(message) // console.log(res1)// 2.使用字符串的方法, 传入一个正则表达式 // 2.1. match方法: // const result2 message.match(re1) // console.log(result2)// 2.2. matchAll方法 // 注意: matchAll传入的正则修饰符必须加g // const result3 message.matchAll(re1) // // console.log(result3.next()) // // console.log(result3.next()) // // console.log(result3.next()) // // console.log(result3.next()) // for (const item of result3) { // console.log(item) // }// 2.3. replace/replaceAll方法// 2.4. split方法 // const result4 message.split(re1) // console.log(result4)// 2.5. search方法 const result5 message.search(re1) console.log(result5)// 案例: 让用户输入的账号必须是aaaaa以上 // const inputEl document.querySelector(input) // const tipEl document.querySelector(.tip)// inputEl.oninput function() { // const value this.value // if (/^a{5,8}$/.test(value)) { // tipEl.textContent 输入的内容符合规则要求 // } else { // tipEl.textContent 输入的内容不符合规则要求, 请重新输入 // } // }3.修饰符flag的使用 常见的修饰符 flag含义g全部的给我匹配全部的i忽略大小写m多行匹配 需求 获取一个字符串中所有的abc将一个字符串中的所有abc换成大写 let message Hello abc, abc, Abc, AAaBc const pattern /abc/ig const results message.match(pattern) console.log(results)message message.replaceAll(pattern, ABC) console.log(message)4.规则 – 字符类Character classes 字符类Character classes 是一个特殊的符号匹配特定集中的任何符号。 字符含义\d“d” 来自 “digit”数字从 0 到 9 的字符。\s“s” 来自 “space”空格符号包括空格制表符 \t换行符 \n 和其他少数稀有字符例如 \v\f 和 \r。\w“w” 来自 “word”“单字”字符拉丁字母或数字或下划线 _。.点点 . 是一种特殊字符类它与 “除换行符之外的任何字符” 匹配 反向类Inverse classes \D 非数字除 \d 以外的任何字符例如字母。\S 非空格符号除 \s 以外的任何字符例如字母。\W 非单字字符除 \w 以外的任何字符例如非拉丁字母或空格。 const message CSS2.5 const pattern /CSS\d(\.\d)?/i console.log(message.match(pattern))5.规则 – 锚点Anchors 符号 ^ 和符号 $ 在正则表达式中具有特殊的意义它们被称为“锚点”。 符号 ^ 匹配文本开头符号 $ 匹配文本末尾 const message My name is WHY.// 字符串方法 if (message.startsWith(my)) {console.log(以my开头) } if (message.endsWith(why)) {console.log(以why结尾) }// 正则: 锚点 if (/^my/i.test(message)) {console.log(以my开头) }if (/why\.$/i.test(message)) {console.log(以why结尾) }const re /^coder$/ const info codaaaer console.log(re.test(info)) // false词边界Word boundary 词边界 \b 是一种检查就像 ^ 和 $ 一样它会检查字符串中的位置是否是词边界。词边界测试 \b 检查位置的一侧是否匹配 \w而另一侧则不匹配 “\w” 匹配下面字符串中的时间 const message now time 22:45, number is 123.456 const timepattern /\b\d\d:\d\d\b/g console.log(message.match(timepattern))6.规则 – 转义字符串 如果要把特殊字符作为常规字符来使用需要对其进行转义 只需要在它前面加个反斜杠 常见的需要转义的字符 [] \ ^ $ . | ? * () 斜杠符号 / 并不是一个特殊符号但是在字面量正则表达式中也需要转义 练习匹配所有以.js或者jsx结尾的文件名 const filenames [abc.js, cba.java, nba.html] const newNames filenames.filter(item {return /\.jsx?$/.test(item) })在webpack当中匹配文件名时就是以这样的方式。 // 定义正则: 对.转义 const re /\./ig const message abc.whyconst results message.match(re) console.log(results)// 特殊: / // const re2 /\//// 获取到很多的文件名 // jsx - js文件 const fileNames [abc.html, Home.jsx, index.html, index.js, util.js, format.js] // 获取所有的js的文件名(webpack) // x?: x是0个或者1个 const jsfileRe /\.jsx?$/ // 1.for循环做法 // const newFileNames [] // for (const filename of fileNames) { // if (jsfileRe.test(filename)) { // newFileNames.push(filename) // } // } // console.log(newFileNames)// 2.filter高阶函数 // const newFileNames fileNames.filter(filename jsfileRe.test(filename)) // console.log(newFileNames)7.集合Sets和范围Ranges 有时候我们只要选择多个匹配字符的其中之一就可以 在方括号 […] 中的几个字符或者字符类意味着“搜索给定的字符中的任意一个” 集合Sets 比如说[eao] 意味着查找在 3 个字符 ‘a’、‘e’ 或者 ‘o’ 中的任意一个 范围Ranges 方括号也可以包含字符范围比如说[a-z] 会匹配从 a 到 z 范围内的字母[0-5] 表示从 0 到 5 的数字[0-9A-F] 表示两个范围它搜索一个字符满足数字 0 到 9 或字母 A 到 F\d —— 和 [0-9] 相同\w —— 和 [a-zA-Z0-9_] 相同 案例匹配手机号码 const phonePattern /^1[356789]\d{9}$/排除范围除了普通的范围匹配还有类似 [^…] 的“排除”范围匹配 // 手机号的规则: 1[3456789]033334444 const phoneStarts [132, 130, 110, 120, 133, 155] const phoneStartRe /^1[3456789]\d/ const filterPhone phoneStarts.filter(phone phoneStartRe.test(phone)) console.log(filterPhone)const phoneNum 133888855555 const phoneRe /^1[3-9]\d{9}$/ console.log(phoneRe.test(phoneNum))// 了解: 排除范围 // \d - [0-9] // \D - [^0-9]8.量词Quantifiers 假设我们有一个字符串 7(903)-123-45-67并且想要找到它包含的所有数字。 因为它们的数量是不同的所以我们需要给与数量一个范围用来形容我们所需要的数量的词被称为量词 Quantifiers 。 数量 {n} 确切的位数{5}某个范围的位数{3,5} 缩写 代表一个或多个相当于 {1,}?代表零个或一个相当于 {0,1}。换句话说它使得符号变得可选*代表着零个或多个相当于 {0,}。也就是说这个字符可以多次出现或不出现 案例匹配开始或结束标签 // 1.量词的使用 const re /a{3,5}/ig const message fdaaa2fdaaaaaasf42532fdaagjkljlaaaafconst results message.match(re) console.log(results)// 2.常见的符号: /?/* // : {1,} // ?: {0,1} // *: {0,}// 3.案例: 字符串的html元素, 匹配出来里面所有的标签 const htmlElement divspan哈哈哈/spanh2我是标题/h2/div const tagRe /\/?[a-z][a-z0-9]*/ig const results2 htmlElement.match(tagRe) console.log(results2)9.贪婪 Greedy和惰性 lazy模式 如果我们有这样一个需求匹配下面字符串中所有使用《》包裹的内容 const message 我最喜欢的两本书《黄金时代》和《沉默的大多数》 const results message.match(/《.》/g) console.log(results)默认情况下的匹配规则是查找到匹配的内容后会继续向后查找一直找到最后一个匹配的内容 这种匹配的方式我们称之为贪婪模式Greedy 懒惰模式中的量词与贪婪模式中的是相反的。 只要获取到对应的内容后就不再继续向后匹配我们可以在量词后面再加一个问号 ? 来启用它所以匹配模式变为 *? 或 ?甚至将 ‘?’ 变为 ?? const message 我最喜欢的两本书《黄金时代》和《沉默的大多数》 const results message.match(/《.?》/g) console.log(results)10.捕获组capturing group 模式的一部分可以用括号括起来 (…)这称为“捕获组capturing group”。 这有两个作用 它允许将匹配的一部分作为结果数组中的单独项它将括号视为一个整体 方法 str.match(regexp)如果 regexp 没有 g 标志将查找第一个匹配并将它作为一个数组返回 在索引 0 处完全匹配。在索引 1 处第一个括号的内容。在索引 2 处第二个括号的内容。…等等… 案例匹配到HTML标签并且获取其中的内容 const str h1title/h1 const result str.match(/(.?)/) console.log(result[0]) console.log(result[1])命名组 用数字记录组很困难。对于更复杂的模式计算括号很不方便。我们有一个更好的选择给括号起个名字。这是通过在开始括号之后立即放置 ? 来完成的。 const result message.match(/(?codermqhel)lo/i)非捕获组 有时我们需要括号才能正确应用量词但我们不希望它们的内容出现在结果中。可以通过在开头添加 ?: 来排除组。 const result message.match(/(?codermqhel)(lo)/)or是正则表达式中的一个术语实际上是一个简单的“或”。 在正则表达式中它用竖线 | 表示通常会和捕获组一起来使用在其中表示多个值 // 1.将捕获组作为整体 const info dfabcabcfabcdfdabcabcabcljcbacballnbanba;jk;j const abcRe /(abc|cba|nba){2,}/ig console.log(info.match(abcRe))11.封装日期格式化函数 function formatDate(timestamp, formatString) {const date new Date(timestamp);const obj {y: date.getFullYear(),M: date.getMonth() 1,d: date.getDate(),h: date.getHours(),m: date.getMinutes(),s: date.getSeconds(),S: date.getMilliseconds()};for (const key in obj) {if (new RegExp((${key})).test(formatString)) {const value (obj[key] ).padStart(2, 0);formatString formatString.replaceAll(RegExp.$1, value);}}return formatString; } const nowDate Date.now(); const formatStr formatDate(nowDate, yyyy-MM-dd hh:mm:ss.SSS); console.log(formatStr);
http://www.tj-hxxt.cn/news/137444.html

相关文章:

  • 最好的淘宝客网站hhvm wordpress 空白
  • 免费企业网站程序上传南京百度推广开户
  • 上海闵行区网站建设如何做好专业类网站
  • 孝昌县建设局网站做受视频播放网站
  • 新手建网站视频教程广州公司注册查询
  • 网站开发难点设计感超强的公司名字
  • php网站开发需要学哪些wordpress禁止调用头部
  • 宁波网站推广多少钱一个网站建设里怎么写文章
  • html格式的网站地图淘客cms系统
  • 做网站seo优化总结老闵行
  • 小程序商店多少钱单页网站seo如何优化
  • 建材 东莞网站建设公司发展规划怎么写
  • 郑州知名网站建设服务公司织梦多语言网站
  • 长沙网站开发微联讯点官网重庆天古装饰公司
  • 学做包子馒头的网站236企业邮箱登陆入口
  • 网站开发需要的技术人才WordPress如何清除缓存
  • 不合理的网站建设网站怎么到工商备案
  • 专业的网站建设公公司简介300字
  • 长沙网站建设找哪家建设装修公司网站
  • 找最新游戏做视频网站有哪些北京住房和城乡建设网
  • 网站开发 百度网盘设计作品集模板
  • ae免费模板网站国外做ic的网站
  • 网站建设征求意见国家市场监督局官网
  • 设计与制作网站杭州制作公司网站
  • 什么网站可以做平面设计赚钱全国建筑资质查询系统
  • 成都企业网站建设公司织梦网站是不是容易做seo
  • 用jsp做的汽车网站做外贸的都有哪些网站
  • 自适应型网站建设多少钱大连建网站
  • 网站特色欧米茄女士手表网站
  • 做黑帽需不需要搭建网站网站建设 英汇网络