From b21ce6ee5e9aa0073922e7d00e5f5834863dc107 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 17 Oct 2016 18:19:51 +0200 Subject: [PATCH] improve regex, fixes replacements of usernames with same trunk Signed-off-by: Arthur Schiwon --- apps/comments/js/commentstabview.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js index 23f2bc489e..9c0e6a6b68 100644 --- a/apps/comments/js/commentstabview.js +++ b/apps/comments/js/commentstabview.js @@ -256,9 +256,20 @@ for(var i in mentions) { var mention = '@' + mentions[i].mentionId; + + + // escape possible regex characters in the name mention = mention.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); var displayName = ''+ _.escape(mentions[i].mentionDisplayName)+''; - message = message.replace(new RegExp(mention, 'g'), displayName); + + // replace every mention either at the start of the input or after a whitespace + // followed by a non-word character. + message = message.replace(new RegExp("(^|\\s)(" + mention + ")(\\b|?![_-@.])", 'g'), + function(match, p1) { + // to get number of whitespaces (0 vs 1) right + return p1+displayName; + } + ); } return message;