當我在Clojure中時,我可以使用(re-pattern (java.util.regex.Pattern/quote foo))
將模式字符串與另一個字符串完全匹配。我如何在ClojureScript中做類似的事情?ClojureScript中的Java模式/報價等效
編輯:我也發現了這一點 - Replicate the functionality of Java's "Pattern.quote" in a JavaScript RegExp
當我在Clojure中時,我可以使用(re-pattern (java.util.regex.Pattern/quote foo))
將模式字符串與另一個字符串完全匹配。我如何在ClojureScript中做類似的事情?ClojureScript中的Java模式/報價等效
編輯:我也發現了這一點 - Replicate the functionality of Java's "Pattern.quote" in a JavaScript RegExp
我應該說第一關,我既不使用ClojureScript和JavaScript,但ClojureScript正則表達式支持快速搜索把我帶到這個頁面:https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure,其中根據「其他函數「部分,它說:」ClojureScript正則表達式支持是JavaScript的「,提供此鏈接:http://www.w3schools.com/jsref/jsref_obj_regexp.asp。下一個鏈接似乎爲你提供了你想要的東西(作爲一個不使用JavaScript的人,我很謹慎地說)。
編輯
哦,也許答案在這裏這個老問題:Converting user input string to regular expression會給你一個更完整的答案。
這裏沒有內置的Clojure或Javascript函數。
這Clojure的函數應該在一個字符串轉義特殊字符的正則表達式:
(defn re-quote [s]
(let [special (set ".?*+^$[]\\(){}|")
escfn #(if (special %) (str \\ %) %)]
(apply str (map escfn s))))
免責聲明:我沒有廣泛測試此所以你可能要使用此之前得到第二意見代碼來消毒潛在的惡意字符串。
其實'Pattern/quote'用'\ Q'和'\ E'包圍表達式。 – 2015-04-13 19:49:07