From e94b8edacc69e18b4906f90711375c679acffbd1 Mon Sep 17 00:00:00 2001
From: Stefano Pigozzi <me@steffo.eu>
Date: Fri, 4 Oct 2024 13:19:09 +0200
Subject: [PATCH] Do not save state between regex executions

Fixes #843.

See https://stackoverflow.com/questions/2630418/javascript-regex-returning-true-then-false-then-true-etc for more information!
---
 src/utils/enhance-content.js | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/utils/enhance-content.js b/src/utils/enhance-content.js
index 6796341d..15c215bd 100644
--- a/src/utils/enhance-content.js
+++ b/src/utils/enhance-content.js
@@ -19,15 +19,15 @@ function escapeHTML(html) {
 
 const LINK_REGEX = /<a/i;
 const HTTP_LINK_REGEX = /^https?:\/\//i;
-const MENTION_REGEX = /^@[^@]+(@[^@]+)?$/g;
-const HASHTAG_REGEX = /^#[^#]+$/g;
-const CODE_BLOCK_REGEX = /^```[^]+```$/g;
-const CODE_BLOCK_START_REGEX = /^```/g;
-const CODE_BLOCK_END_REGEX = /```$/g;
-const INLINE_CODE_REGEX = /`[^`]+`/g;
+const MENTION_REGEX = /^@[^@]+(@[^@]+)?$/;
+const HASHTAG_REGEX = /^#[^#]+$/;
+const CODE_BLOCK_REGEX = /^```[^]+```$/;
+const CODE_BLOCK_START_REGEX = /^```/;
+const CODE_BLOCK_END_REGEX = /```$/;
+const INLINE_CODE_REGEX = /`[^`]+`/;
 const TWITTER_DOMAIN_REGEX = /(twitter|x)\.com/i;
-const TWITTER_MENTION_REGEX = /@[a-zA-Z0-9_]+@(twitter|x)\.com/g;
-const TWITTER_MENTION_CAPTURE_REGEX = /(@([a-zA-Z0-9_]+)@(twitter|x)\.com)/g;
+const TWITTER_MENTION_REGEX = /@[a-zA-Z0-9_]+@(twitter|x)\.com/;
+const TWITTER_MENTION_CAPTURE_REGEX = /(@([a-zA-Z0-9_]+)@(twitter|x)\.com)/;
 
 function createDOM(html, isDocumentFragment) {
   const tpl = document.createElement('template');