From e9e2a9cdcc52e9e33838074ec7e8a0bdbbe8dace Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6berl?= <derkoe@users.noreply.github.com>
Date: Sat, 3 Feb 2018 10:51:02 +0100
Subject: [PATCH] Allow square brackets in external issue patterns (#3408)

* Allow square brackets in external issue patterns

* Added false test cases for checklist elements
---
 modules/markup/html.go      | 4 ++--
 modules/markup/html_test.go | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/modules/markup/html.go b/modules/markup/html.go
index d33afd384..772c521ea 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -38,9 +38,9 @@ var (
 	MentionPattern = regexp.MustCompile(`(\s|^|\W)@[0-9a-zA-Z-_\.]+`)
 
 	// IssueNumericPattern matches string that references to a numeric issue, e.g. #1287
-	IssueNumericPattern = regexp.MustCompile(`( |^|\()#[0-9]+\b`)
+	IssueNumericPattern = regexp.MustCompile(`( |^|\(|\[)#[0-9]+\b`)
 	// IssueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234
-	IssueAlphanumericPattern = regexp.MustCompile(`( |^|\()[A-Z]{1,10}-[1-9][0-9]*\b`)
+	IssueAlphanumericPattern = regexp.MustCompile(`( |^|\(|\[)[A-Z]{1,10}-[1-9][0-9]*\b`)
 	// CrossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository
 	// e.g. gogits/gogs#12345
 	CrossReferenceIssueNumericPattern = regexp.MustCompile(`( |^)[0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+#[0-9]+\b`)
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index 5e783c754..4e47b47b0 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -345,6 +345,7 @@ func TestRegExp_IssueNumericPattern(t *testing.T) {
 		"#1234",
 		"#0",
 		"#1234567890987654321",
+		"[#1234]",
 	}
 	falseTestCases := []string{
 		"# 1234",
@@ -355,6 +356,8 @@ func TestRegExp_IssueNumericPattern(t *testing.T) {
 		"#1A2B",
 		"",
 		"ABC",
+		"[]",
+		"[x]",
 	}
 
 	for _, testCase := range trueTestCases {
@@ -371,6 +374,7 @@ func TestRegExp_IssueAlphanumericPattern(t *testing.T) {
 		"A-1",
 		"RC-80",
 		"ABCDEFGHIJ-1234567890987654321234567890",
+		"[JIRA-134]",
 	}
 	falseTestCases := []string{
 		"RC-08",
@@ -383,6 +387,7 @@ func TestRegExp_IssueAlphanumericPattern(t *testing.T) {
 		"ABC",
 		"GG-",
 		"rm-1",
+		"[]",
 	}
 
 	for _, testCase := range trueTestCases {