当我在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