ES6学习——正则表达式新特性

73 篇文章 23 订阅

简单说一下正则表达式中新加入的特性:

1)flags属性:

/abc/ig.flags//gi

2)/u unicode标记,Chrome 48都还不支持这个标记

/\uD83D/.test('\uD83D\uDC2A')//true
/\uD83D/u.test('\uD83D\uDC2A')//false

/\uD83D/u.test('\uD83D \uD83D\uDC2A')//true
/\uD83D/u.test('\uD83D\uDC2A \uD83D')//true

/^[\uD83D\uDC2A]$/u.test('\uD83D\uDC2A')//true
/^[\uD83D\uDC2A]$/.test('\uD83D\uDC2A')//false

/^[\uD83D\uDC2A]$/u.test('\uD83D')//false
/^[\uD83D\uDC2A]$/.test('\uD83D')//true

'\uD83D\uDE80'.match(/./gu).length//1
'\uD83D\uDE80'.match(/./g).length//2

/\uD83D\uDE80{2}/u.test('\uD83D\uDE80\uD83D\uDE80')//true
/\uD83D\uDE80{2}/.test('\uD83D\uDE80\uD83D\uDE80')//false
/\uD83D\uDE80{2}/.test('\uD83D\uDE80\uDE80')//true

3)/y标记,看一下这个标记对一些函数的影响





这个标记的一个用途就是用来分词:

function tokenize(TOKEN_REGEX, str) {
    let result = [];
    let match;
    while (match = TOKEN_REGEX.exec(str)) {
        result.push(match[1]);
    }
    return result;
}

const TOKEN_GY = /\s*(\+|[0-9]+)\s*/gy;
const TOKEN_G = /\s*(\+|[0-9]+)\s*/g;

tokenize(TOKEN_GY, '3 + 4')//[ '3', '+', '4' ]
tokenize(TOKEN_G, '3 + 4')//[ '3', '+', '4' ]

tokenize(TOKEN_GY, '3x + 4')//[ '3' ]
tokenize(TOKEN_G, '3x + 4')//[ '3', '+', '4' ]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值