Javascript每日一题

2021-07-27 15:00 Javascript每日一题

输出是什么?

const words = /\b\p{Alphabetic}+\b/guconst text = 'Hello wǒrld'let str = ''for (let word of text.matchAll(words)) {  str += word[0] + '~'}console.log(str) // ?



图片




图片

答案

图片





答案: 'Hello~wǒrld~'


matchAll(RegExp) 方法返回一个迭代器。其中 RegExp必须是设置了全局模式 的形式,否则会抛出异常TypeError


/\b\p{Alphabetic}+\b/gu正则中, g 代表全局搜索,u 表示使用 unicode 码的模式进行匹配,u 可以让正则表达式匹配完整的码点而不是匹配16位值。u 标识是 ES6 新增的,如果没有特殊原因,建议所有正则表达式都使用这个标志。此外,正则中 \p{...} 形式的字符表示如果正则使用 u 标志,则支持字符类 \p{...} 及其排除性形式 \P{...} ,我们举个网上的例子:


const sentence = 'A ticket to 南京 costs ¥2000 ????.'const regexpEmojiPresentation = /\p{Emoji_Presentation}/guconsole.log(sentence.match(regexpEmojiPresentation)) // expected output: Array ["????"]
const regexpNonLatin = /\P{Script_Extensions=Latin}+/guconsole.log(sentence.match(regexpNonLatin)) // expected output: Array [" ", " ", " 南京 ", " ¥2000 ????."]
const regexpCurrencyOrPunctuation = /\p{Sc}|\p{P}/guconsole.log(sentence.match(regexpCurrencyOrPunctuation)) // expected output: Array ["¥", "."]


2021/07/27
本文章转载自公众号:javascript_daily

首页 - Javascript 相关的更多文章: