aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
authormrmr19932014-04-19 03:51:49 +0100
committermrmr19932014-04-19 03:51:49 +0100
commit348a4052fed6f06e41ab84f2aa33290d20fb5a06 (patch)
tree7d4cabdfca240fd96cb144ec5cfc6b52af98bc76 /content_scripts
parent0450bec1a279e8d67ea46950397f1de91b1b118c (diff)
downloadvimium-348a4052fed6f06e41ab84f2aa33290d20fb5a06.tar.bz2
Use RegExp to escape special characters for plain find queries
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/vimium_frontend.coffee16
1 files changed, 3 insertions, 13 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index c7cff961..69e21a60 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -560,19 +560,9 @@ updateFindModeQuery = ->
# from the internal representation used by window.find.
else
# escape all special characters, so RegExp just parses the string 'as is'.
- parsedNonRegexQuery = findModeQuery.parsedQuery.replace("\\", "\\\\")
- .replace("^", "\\^")
- .replace("$", "\\$")
- .replace("*", "\\*")
- .replace("+", "\\+")
- .replace("?", "\\?")
- .replace("(", "\\(")
- .replace(")", "\\)")
- .replace("|", "\\|")
- .replace("{", "\\{")
- .replace("}", "\\}")
- .replace("[", "\\[")
- .replace("]", "\\]")
+ # Taken from http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
+ escapeRegExp = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g
+ parsedNonRegexQuery = findModeQuery.parsedQuery.replace(escapeRegExp, (char) -> "\\" + char)
pattern = new RegExp(parsedNonRegexQuery, "g" + (if findModeQuery.ignoreCase then "i" else ""))
text = document.body.innerText
findModeQuery.matchCount = text.match(pattern)?.length