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) {