老师,为什么第二个不能匹配到K?

老师,为什么第二个不能匹配到K?

console.log(/[A-Z]/u.exec('\u004B'));

console.log(/[A-Z]/u.exec('\u212A'));


正在回答

登陆购买课程后可参与讨论,去登陆

4回答

可以理解u就是加强了对unicode码的识别。

i 修饰符

有些 Unicode 字符的编码不同,但是字型很相近,比如,\u004B与\u212A都是大写的K。

/[a-z]/i.test('\u212A') // false

/[a-z]/iu.test('\u212A') // true

上面代码中,不加u修饰符,就无法识别非规范的K字符。



  • 陈莺莺呀 提问者 #1
    你说的很有道理。
    2020-01-07 22:36:32
暮雪之寒 2020-01-06 12:11:16

i 是表示不区分大小写,"\u004B"这个是代表大写的K;"\u212A"这个是代表小写的k

慕课网的粉 2019-12-28 11:15:15

使用i才可以,要是不用i的话,这样写能匹配, console.log(/[A-Z]/u.exec('\u004B'));你试试

提问者 陈莺莺呀 2019-12-27 22:35:33

为什么  /[a-z]/iu.exec('\u212A') 这个可以,而 /[A-Z]/u.exec('\u212A')不可以呢??

  • i 是表示不区分大小写,"\u004B"这个是代表大写的K;"\u212A"这个是代表小写的k /[a-z]/iu.exec('\u212A'),这个不区分大小写,而且范围就是小写的a-z,当然是能匹配到小写的k。而 /[A-Z]/u.exec('\u212A')这个范围就是大写的A-Z,也没有设置i(不区分大小写),所以不可以
    2020-01-06 12:09:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师