From a5b607b30bac7a2570525e0037b37b5b0eb1e5b0 Mon Sep 17 00:00:00 2001 From: tshinohara Date: Wed, 16 Aug 2023 02:48:50 +0900 Subject: [PATCH] fix url regax pattern. --- .../vitorpamplona/amethyst/service/CachedRichTextParser.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt index 3683221a1..7c3ec2c59 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt @@ -59,7 +59,7 @@ val noProtocolUrlValidator = try { Pattern.compile("(([\\w\\d-]+\\.)*[a-zA-Z][\\w-]+[\\.\\:]\\w+([\\/\\?\\=\\&\\#\\.]?[\\w-]+)*\\/?)(.*)") } -val HTTPRegex = "^((http|https)://)?([A-Za-z0-9-]+(\\.[A-Za-z0-9]+)+)(:[0-9]+)?(/[^?#]*)?(\\?[^#]*)?(#.*)?".toRegex(RegexOption.IGNORE_CASE) +val HTTPRegex = "^((http|https)://)?([A-Za-z0-9-_]+(\\.[A-Za-z0-9-_]+)+)(:[0-9]+)?(/[^?#]*)?(\\?[^#]*)?(#.*)?".toRegex(RegexOption.IGNORE_CASE) class RichTextParser() { fun parseText( @@ -183,7 +183,7 @@ class RichTextParser() { } else if (word.contains(".") && schemelessMatcher.find()) { val url = schemelessMatcher.group(1) // url val additionalChars = schemelessMatcher.group(4) // additional chars - val pattern = "^([A-Za-z0-9-_]+(\\.[A-Za-z0-9-_]+)+)(:[0-9]+)?(/[^?#]*)?(\\?[^#]*)?(#.*)?".toRegex(RegexOption.IGNORE_CASE) + val pattern = """^([A-Za-z0-9-_]+(\.[A-Za-z0-9-_]+)+)(:[0-9]+)?(/[^?#]*)?(\?[^#]*)?(#.*)?""".toRegex(RegexOption.IGNORE_CASE) if (pattern.find(word) != null) { SchemelessUrlSegment(word, url, additionalChars) } else {