mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Backport #27987 by @yardenshoham Added the following characters to the regular expression for the email: - , - ; - ? - ! Also added a test case. - Fixes #27616 # Before  # After  Signed-off-by: Yarden Shoham <git@yardenshoham.com> Co-authored-by: Yarden Shoham <git@yardenshoham.com>
This commit is contained in:
		@@ -66,7 +66,7 @@ var (
 | 
				
			|||||||
	// well as the HTML5 spec:
 | 
						// well as the HTML5 spec:
 | 
				
			||||||
	//   http://spec.commonmark.org/0.28/#email-address
 | 
						//   http://spec.commonmark.org/0.28/#email-address
 | 
				
			||||||
	//   https://html.spec.whatwg.org/multipage/input.html#e-mail-state-(type%3Demail)
 | 
						//   https://html.spec.whatwg.org/multipage/input.html#e-mail-state-(type%3Demail)
 | 
				
			||||||
	emailRegex = regexp.MustCompile("(?:\\s|^|\\(|\\[)([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9]{2,}(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+)(?:\\s|$|\\)|\\]|\\.(\\s|$))")
 | 
						emailRegex = regexp.MustCompile("(?:\\s|^|\\(|\\[)([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9]{2,}(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+)(?:\\s|$|\\)|\\]|;|,|\\?|!|\\.(\\s|$))")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// blackfriday extensions create IDs like fn:user-content-footnote
 | 
						// blackfriday extensions create IDs like fn:user-content-footnote
 | 
				
			||||||
	blackfridayExtRegex = regexp.MustCompile(`[^:]*:user-content-`)
 | 
						blackfridayExtRegex = regexp.MustCompile(`[^:]*:user-content-`)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -264,6 +264,18 @@ func TestRender_email(t *testing.T) {
 | 
				
			|||||||
		"send email to info@gitea.co.uk.",
 | 
							"send email to info@gitea.co.uk.",
 | 
				
			||||||
		`<p>send email to <a href="mailto:info@gitea.co.uk" rel="nofollow">info@gitea.co.uk</a>.</p>`)
 | 
							`<p>send email to <a href="mailto:info@gitea.co.uk" rel="nofollow">info@gitea.co.uk</a>.</p>`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						test(
 | 
				
			||||||
 | 
							`j.doe@example.com,
 | 
				
			||||||
 | 
						j.doe@example.com.
 | 
				
			||||||
 | 
						j.doe@example.com;
 | 
				
			||||||
 | 
						j.doe@example.com?
 | 
				
			||||||
 | 
						j.doe@example.com!`,
 | 
				
			||||||
 | 
							`<p><a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>,<br/>
 | 
				
			||||||
 | 
					<a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>.<br/>
 | 
				
			||||||
 | 
					<a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>;<br/>
 | 
				
			||||||
 | 
					<a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>?<br/>
 | 
				
			||||||
 | 
					<a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>!</p>`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Test that should *not* be turned into email links
 | 
						// Test that should *not* be turned into email links
 | 
				
			||||||
	test(
 | 
						test(
 | 
				
			||||||
		"\"info@gitea.com\"",
 | 
							"\"info@gitea.com\"",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user