diff options
| author | mrmr1993 | 2014-04-19 03:51:49 +0100 |
|---|---|---|
| committer | mrmr1993 | 2014-04-19 03:51:49 +0100 |
| commit | 348a4052fed6f06e41ab84f2aa33290d20fb5a06 (patch) | |
| tree | 7d4cabdfca240fd96cb144ec5cfc6b52af98bc76 | |
| parent | 0450bec1a279e8d67ea46950397f1de91b1b118c (diff) | |
| download | vimium-348a4052fed6f06e41ab84f2aa33290d20fb5a06.tar.bz2 | |
Use RegExp to escape special characters for plain find queries
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 16 |
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 |
