日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6-13 正则方法、修饰符yus、UTF_16编码方式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

修飾符

  • m multiLine 對(duì)于str中含\n的情況
  • g global
  • i ignoreCase

元字符

  • 反斜杠加轉(zhuǎn)義
元字符含義簡(jiǎn)寫(xiě)
\w匹配字母、數(shù)字、下劃線。等價(jià)于’[A-Za-z0-9_]’。word
\W匹配非字母、數(shù)字、下劃線。等價(jià)于 ‘[^A-Za-z0-9_]’。
\s匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于 [ \f\n\r\t\v]。space
\S匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
[\w\W]所有字符
\d匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。digit
\D匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。
\b匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。bridge border
\B匹配非單詞邊界。

ES6新增部分

1. 聲明正則的變化方式

var reg = new RegExp('xyz', i) // 也可以 修飾符以第二個(gè)參數(shù)為準(zhǔn) var reg = new RegExp(/xyz/, 'i') // 等價(jià)于ES5 var reg = /xyz/i

2. 字符串上的正則方法調(diào)整

// ES6,當(dāng)調(diào)用字符串方法match時(shí),本質(zhì)上調(diào)用的是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

修飾符含義簡(jiǎn)寫(xiě)
\y再次匹配的時(shí)候看是否粘粘的,是全局的sticky
\u識(shí)別D800以后的4字節(jié)文字,會(huì)將4字節(jié)看做1個(gè)字來(lái)匹配unicode
\
\

y

<script>(function () {const str = "aaa_aa_a";const reg2 = /a+/yconsole.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+/gconsole.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分區(qū)定義,ASCII是Unicode的一部分
  • 每個(gè)區(qū)存放2的16次方個(gè)(2字節(jié),每個(gè)字節(jié)8位)U+0000 到 U+FFFF 第一個(gè)平面(BMP平面)
  • 整個(gè)Unicode分為17個(gè)平面
  • 特殊的漢字,2個(gè)字節(jié)表示不了時(shí),用4個(gè)字節(jié)
  • U+D800 到 U+FFFF沒(méi)有對(duì)應(yīng)的字符
// 一定要大于D800 document.body.innerText = '\uD842\uDFB7' // 𠮷 document.body.innerText = '\uD866\uDF99' // 𩮙 '瀛'.charCodeAt(0) // 28699 (28699).toString(16) // "701b" document.body.innerText = '\u701b' // 瀛

用碼點(diǎn)顯示emoji

emoji對(duì)照表

(/\u{1F60D}/u).test('😍') // true (/a{2}/).test('aa') // true 這里的{}表示量詞

總結(jié)

以上是生活随笔為你收集整理的ES6-13 正则方法、修饰符yus、UTF_16编码方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。