在UTF-8编码表和Unicode字符中,我使用了专用辅助使用区域,因为只有一个字符,我确信它们不会在任何文本中使用。事实是现在我需要在短信里找到他们。下面是一个基本的例子:
\u{f0001} hahrehr \u{f0002} eryteryte \u{f0003}\n yfukguk\u{f0004}\nggikggk
你可以看到……}是我的特殊角色。如果我们console.log这个文本:
console.log("\u{f0001} hahrehr \u{f0002} eryteryte \u{f0003}\n yfukguk\u{f0004}\nggikggk</");
现在我需要一些东西来找到所有那些特殊的焦炭。我想到了regexp,但我不知道如何处理\u{f.}被不同解释的事实。
我知道我的问题不是很清楚,但我采取任何可以帮助我的想法。
发布于 2020-06-30 16:29:08
你可以用
/[\uE000-\uF8FF\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/gu
若要将这些字符的所有出现与符合ES6的正则表达式匹配,请执行以下操作。
请参阅Regex改性剂/u在JavaScript?了解有关u
修饰符的更多信息。在这里,有必要支持\u{XXXXX}
表示法。
符合ES5的模式是
/(?:[\uE000-\uF8FF]|[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD])/g
要获得匹配的代码点的十六进制代码数组,请使用一些额外的JavaScript代码:
const str = "\u{f0001} hahrehr \u{f0002} eryteryte \u{f0003}\n yfukguk\u{f0004}\nggikggk</";
const regex = /[\uE000-\uF8FF\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/gu;
console.log(
str.match(regex).map(x => Array.from(x)
.map((v) => v.codePointAt(0).toString(16))
.map((hex) => "0000".substring(0, 4 - hex.length) + hex))
);
https://stackoverflow.com/questions/62661373
复制相似问题