From 5843b3037fa10700718d9e062cba6b1ef215adf1 Mon Sep 17 00:00:00 2001 From: Toks Date: Fri, 12 Apr 2013 18:00:57 -0400 Subject: [PATCH] fix regexp in reltag toggle should account for all special characters while preserving newlines --- app/assets/javascripts/related_tag.js | 3 ++- app/assets/javascripts/utility.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/related_tag.js b/app/assets/javascripts/related_tag.js index 554873b73..8f6c01705 100644 --- a/app/assets/javascripts/related_tag.js +++ b/app/assets/javascripts/related_tag.js @@ -194,7 +194,8 @@ var tag = $(e.target).html().replace(/ /g, "_").replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); if ($.inArray(tag, tags) > -1) { - $field.val($field.val().replace(new RegExp("\\b" + tag + "\\b", "gi"), " ")); + var escaped_tag = Danbooru.regexp_escape(tag); + $field.val($field.val().replace(new RegExp("(^|\\s)" + escaped_tag + "($|\\s)", "gi"), "$1$2")); } else { $field.val($field.val() + " " + tag); } diff --git a/app/assets/javascripts/utility.js b/app/assets/javascripts/utility.js index 729534db4..fd0761649 100644 --- a/app/assets/javascripts/utility.js +++ b/app/assets/javascripts/utility.js @@ -74,6 +74,10 @@ return filtered; } + Danbooru.regexp_escape = function(string) { + return string.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); + } + $.fn.selectRange = function(start, end) { return this.each(function() { if (this.setSelectionRange) {