【ES6系列】RegExp

一、正则表达式:y 修饰符 (sticky 粘连)

const s = 'aaa_aa_a'
const r1 = /a+/g // 第一次匹配之后,从剩余的字符里匹配 
const r2 = /a+/y // y修饰符 sticky 粘连:第一次匹配之后,接下来从紧跟着的字符开始匹配。适合业务场景:连续匹配 一定程度上等同于 ^ $
console.log(r1.exec(s)) // aaa
console.log(r2.exec(s)) // aaa
console.log(r1.exec(s)) // aa
console.log(r2.exec(s)) // null

二、ES5 如何在正则中处理中文问题?如果是多个字节呢?ES6如何实现?

// unicode 国际编码标准 u 修饰符, "Unicode模式",用来正确处理大于 \uFFFF 的Unicode字符
let s = '𠮷'
// let s2 = '\uD842\uDFB7'
// console.log(/^\uD842/.test(s2)) // true
// console.log(/^\uD842/u.test(s2)) // false

// . 匹配任意字符
// console.log(/^.$/.test(s)) 
// console.log(/^.$/u.test(s))
// unicode 码点识别码点值
// console.log(/\u{20BB7}/u.test(s))
// console.log(/\u{61}/u.test('a'))

// 量词
// console.log(/𠮷{2}/u.test('𠮷𠮷')) // true
// console.log(/𠮷{2}/.test('𠮷𠮷')) // false

// i 修饰符 忽略大小写
console.log(/[a-z]/i.test('\u212A')) //false
console.log(/[a-z]/iu.test('\u212A')) //true

// ES6中正则后加u修饰符

延伸阅读:

1、Unicode 及编码方式概述

2、Unicode 转 UTF-16 的转码公式

3、New regular expression features in ECMAScript 6

4、sticky

思考:

1、sticky 模式有什么实际应用场景吗?

2、上面提到的 \uD83D\uDC2A 是四个字节,加了u标识符会正确识别出是两个字符,那么在 JavaScript里一个字符是几个字节?

3、U+20BB7 是如何计算出“\uD842\uDFB7”的?

我vue项目启动的时候报如下错误如何解决: ERROR Failed to compile with 394 errors 14:21:17 These dependencies were not found: * core-js/modules/es6.array.fill in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.array.find in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/components/InputTable/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/index/RightComponents/Calculate.vue?vue&type=script&lang=js& and 4 others * core-js/modules/es6.array.find-index in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Ge nerator/components/InputTable/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/index/Home.vue?vue&type=script&lang=js& and 7 others * core-js/modules/es6.array.from in ./src/utils/index.js * core-js/modules/es6.array.sort in ./src/components/bus-extents/map/geotool.js, ./src/mixins/generator/index.js and 8 others * core-js/modules/es6.function.name in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Gener ator/components/Upload/UploadImg.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/index/DraggableItem.vue?vue&type=script&lang=js& and 43 others * core-js/modules/es6.map in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/basic/dynamicModel/list/detail/index.vue?vue&type=script&lang=js&, ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.math.sign in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.math.trunc in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.number.constructor in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ Generator/components/Calculate/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/components/InputTable/index.vue?vue&type=script&lang=js& and 26 others * core-js/modules/es6.number.is-finite in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.number.is-integer in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.number.is-nan in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/components/InputTable/index.vue?vue&type=script&lang=js&, ./src/components/Generator/utils/index.js and 1 other * core-js/modules/es6.number.parse-float in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.object.freeze in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.object.keys in ./src/main.js, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/index/Home.vue?vue&type=script&lang=js& and 8 others * core-js/modules/es6.regexp.constructor in ./src/components/Generator/render/render.js, ./src/components/Generator/utils/index.js and 3 others * core-js/modules/es6.regexp.flags in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.regexp.match in ./src/utils/index.js, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bus/app/appDown.vue?vue&type=script&lang=js& and 1 other * core-js/modules/es6.regexp.replace in ./src/api/workFlow/workFlowForm.js, ./src/components/Generator/render/render.js and 34 others * core-js/modules/es6.regexp.search in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Heade rSearch/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/JNPF-iconBox/index.vue?vue&type=script&lang=js& and 36 others * core-js/modules/es6.regexp.split in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Genera tor/components/Calculate/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/index/RightPanel.vue?vue&type=script&lang=js& and 38 others * core-js/modules/es6.regexp.to-string in ./src/components/Generator/utils/index.js, ./src/filters/index.js and 16 others * core-js/modules/es6.set in ./src/utils/index.js, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/permission/authorize/index.vue?vue&type=script&lang=js& * core-js/modules/es6.string.includes in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Col umnDesign/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/components/InputTable/index.vue?vue&type=script&lang=js& and 14 others * core-js/modules/es6.string.iterator in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/bus-extents/print/PrintView.vue?vue&type=script&lang=js&, ./src/utils/index.js and 5 others * core-js/modules/es6.symbol in ./src/views/bus/track/js/jquery-3.3.1.min.js * core-js/modules/es6.typed.float64-array in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.typed.int32-array in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.typed.int8-array in ./src/views/bus/track/js/turf.min.js * core-js/modules/es6.typed.uint32-array in ./src/views/bus/track/js/turf.min.js * core-js/modules/es7.array.includes in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Colu mnDesign/index.vue?vue&type=script&lang=js&, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Generator/components/InputTable/index.vue?vue&type=script&lang=js& and 17 others * core-js/modules/es7.string.pad-start in ./src/utils/index.js, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bus/askLeave/Detail.vue?vue&type=script&lang=js& and 6 others * core-js/modules/es7.symbol.async-iterator in ./src/views/bus/track/js/jquery-3.3.1.min.js * core-js/modules/web.dom.iterable in ./src/main.js, ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ColumnDesign/index.vue?vue&type=script&lang=js& and 71 others To install them, you can run: npm install --save core-js/modules/es6.array.fill core-js/modules/es6.array.find core-js/modules/es6.array.find-index core-js/modules/es6.array.from core-js/modules/es6.array.sort core-js/modules/es6.function.name core-js/modules/es6.map core-js/modules/es6.math.sign core-js/modules/es6.math.trunc core-js/modules/es6.number.constructor core-js/modules/es6.number.is-finite core-js/modules/es6.number.is-integer core-js/modules/es6.number.is-nan core-js/mod ules/es6.number.parse-float core-js/modules/es6.object.freeze core-js/modules/es6.object.keys core-js/modules/es6.regexp.constructor core-js/modules/es6.regexp.flags core-js/modules/es6.regexp.match core-js/modules/es6.regexp.replace core-js/mo dules/es6.regexp.search core-js/modules/es6.regexp.split core-js/modules/es6.regexp.to-string core-js/modules/es6.set core-js/modules/es6.string.includes core-js/modules/es6.string.iterator core-js/modules/es6.symbol core-js/modules/es6.typed.f loat64-array core-js/modules/es6.typed.int32-array core-js/modules/es6.typed.int8-array core-js/modules/es6.typed.uint32-array core-js/modules/es7.array.includes core-js/modules/es7.string.pad-start core-js/modules/es7.symbol.async-iterator core-js/modules/web.dom.iterable Failed to resolve loader: core-js/modules/es6.function.name' in 'D:\Development\project\lh\linhai-boot-web\src\components\SimpleUploader You may need to install it.
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值