diff --git a/src/webpage/markdown.ts b/src/webpage/markdown.ts
index 699645a..2e5a69e 100644
--- a/src/webpage/markdown.ts
+++ b/src/webpage/markdown.ts
@@ -80,11 +80,25 @@ class MarkDown {
}
const span = document.createElement("span");
span.classList.add("md-emoji", "bigemojiUni");
-
- const matched = str.match(/^((|([^\da-zA-Z <>])) *){1,3}$/u);
- if (matched) {
+ const seg = new Intl.Segmenter("en-US", {granularity: "grapheme"});
+ const matchReg = !!str.match(/^(((|([^\da-zA-Z <>]+)) *))$/gu);
+ const matched = matchReg
+ ? Array.from(str.matchAll(/((|([^\da-zA-Z <>]+)) *)/gu) || []).flatMap(
+ (match) => {
+ if (match[0].match(/^$/u)) {
+ return match[0];
+ } else if (match[0].match(/[^\da-zA-Z <>]+$/gu)) {
+ return seg.segment(match[0]);
+ } else if (match[0].match(/^\s*$/)) {
+ console.log(match);
+ return [];
+ } else return [..."aaaa"];
+ },
+ )
+ : [..."aaaa"];
+ if (matched.length <= 3) {
const map = [...str.matchAll(/|[^\da-zA-Z <>]+/gu).map(([_]) => _)];
- const seg = new Intl.Segmenter("en-US", {granularity: "grapheme"});
+
const invalid = map.find((str) => {
if (str.length > 10) return false;
if (Array.from(seg.segment(str)).length !== 1) return true;