码迷,mamicode.com
首页 > 其他好文 > 详细

ECMAScript6面对大于0xFFFF的Unicode字符如何正确返回长度

时间:2018-02-09 20:51:00      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:let   log   regex   length   body   ret   div   大于   real   

一、match()

1.定义

match()方法用于检索字符串内指定(字符串或正则)的值,返回指定值的数组,若找不到,返回null。

2.语法

str.match(searchvalue)
str.match(regexp)

3.示例

let str = 'abc-def-zxc';
console.log(str.match('-')); // ["-", index: 3, input: "abc-def-zxc"]
console.log(str.match(/[a-z]{3}/g)); // ["abc", "def", "zxc"]

4.注意

match()常常与正则标识g配合使用,若没有g则只匹配一次。

let str = 'abc-def-zxc';
console.log(str.match(/[a-z]{3}/)); // ["abc", index: 0, input: "abc-def-zxc"]
console.log(str.match(/[a-z]{3}/g)); // ["abc", "def", "zxc"]

二、使用match()方法判断大于0xFFFF的Unicode字符长度

正则标识u能识别码点大于0xFFFF的Unicode字符。

console.log(/^.$/.test('??')); // false 正常情况下??被当作两个字符
console.log(/^.$/u.test('??')); // true

利用u这个特性可以用来验证判断大于0xFFFF的Unicode字符长度。

function getRealLength (str) {
    let ret = str.match(/./gu);
    return ret ? ret.length : 0;
}
let str = '??????';
console.log(str.length); // 6
console.log(getRealLength(str)); // 3

ECMAScript6面对大于0xFFFF的Unicode字符如何正确返回长度

标签:let   log   regex   length   body   ret   div   大于   real   

原文地址:https://www.cnblogs.com/mazey/p/8436420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!