ES6-13 正则方法、修饰符yus、UTF_16编码方式

修饰符

  • m multiLine 对于str中含\n的情况
  • g global
  • i ignoreCase

元字符

  • 反斜杠加转义
元字符含义简写
\w匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。word
\W匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。space
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
[\w\W]所有字符
\d匹配一个数字字符。等价于 [0-9]。digit
\D匹配一个非数字字符。等价于 [^0-9]。
\b匹配一个单词边界,也就是指单词和空格间的位置。bridge border
\B匹配非单词边界。

ES6新增部分

1. 声明正则的变化方式

var reg = new RegExp('xyz', i)
// 也可以 修饰符以第二个参数为准
var reg = new RegExp(/xyz/, 'i') 
// 等价于ES5
var reg = /xyz/i

2. 字符串上的正则方法调整

在这里插入图片描述

// ES6,当调用字符串方法match时,本质上调用的是RegExp原型上的[Symbol.match]
String.prototype.match → RegExp.prototype[Symbol.match]
String.prototype.replace → RegExp.prototype[Symbol.replace]
String.prototype.search → RegExp.prototype[Symbol.search]
String.prototype.split → RegExp.prototype[Symbol.split]

3. 新增的修饰符u y s

修饰符含义简写
\y再次匹配的时候看是否粘粘的,是全局的sticky
\u识别D800以后的4字节文字,会将4字节看做1个字来匹配unicode
\
\

在这里插入图片描述

y

<script>
    (function () {
        const str = "aaa_aa_a";
        const reg2 = /a+/y
        console.log(reg2.exec(str))
        console.log(reg2.exec(str))
        console.log(reg2.exec(str))
        console.log(reg2.exec(str))
    })();
</script>
<script>
    (function () {
        console.log('--------------脚本2-----------------')
        const str = "aaa_aa_a";
        const reg1 = /a+/g
        console.log(reg1.exec(str))
        console.log(reg1.exec(str))
        console.log(reg1.exec(str))
        console.log(reg1.exec(str))
    })();
</script>

u

console.log(/^\uD83D/.test('\uD83D\uDC2A')) // true
console.log(/^\uD83D/u.test('\uD83D\uDC2A')) // false
console.log(/^.$/.test('\uD83D\uDC2A')) // false .也匹配不到
console.log(/^.$/u.test('\uD83D\uDC2A')) // true
document.body.innerText = '\uD83D\uDC2A'

在这里插入图片描述

s 让.能代表一切

.不能代表的\n \rU2028(行分隔符) U2029(段分隔符)

console.log(/foo.bar/s.test('foo\nbar')) // true
console.log((/foo.bar/s).dotAll)// true

UTF_16

  • Unicode分区定义,ASCII是Unicode的一部分
  • 每个区存放2的16次方个(2字节,每个字节8位)U+0000 到 U+FFFF 第一个平面(BMP平面)
  • 整个Unicode分为17个平面
  • 特殊的汉字,2个字节表示不了时,用4个字节
  • U+D800 到 U+FFFF没有对应的字符
    在这里插入图片描述
// 一定要大于D800
document.body.innerText = '\uD842\uDFB7' // 𠮷
document.body.innerText = '\uD866\uDF99' // 𩮙
'瀛'.charCodeAt(0) // 28699
(28699).toString(16) // "701b"
document.body.innerText = '\u701b' // 瀛

用码点显示emoji

emoji对照表
在这里插入图片描述
在这里插入图片描述

(/\u{1F60D}/u).test('😍') // true
(/a{2}/).test('aa') // true 这里的{}表示量词
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值