ClojureScript中的Java Pattern / quote等价物

时间:2012-08-15 19:51:12

标签: clojure clojurescript

当我在Clojure时,我可以使用(re-pattern (java.util.regex.Pattern/quote foo))将模式字符串与另一个字符串完全匹配。我怎样才能在ClojureScript中做类似的事情?

编辑:我也发现了这个 - Replicate the functionality of Java's "Pattern.quote" in a JavaScript RegExp

2 个答案:

答案 0 :(得分:2)

没有内置的Clojure或Javascript函数。

这个clojure函数应该转义字符串中的特殊正则表达式字符:

(defn re-quote [s]
  (let [special (set ".?*+^$[]\\(){}|")
        escfn #(if (special %) (str \\ %) %)]
    (apply str (map escfn s))))

http://ideone.com/QXbbB

免责声明:我没有对此进行过广泛的测试,因此您可能需要在使用此代码清理潜在的邪恶字符串之前获得第二意见。

答案 1 :(得分:-1)

首先我应该说我既不使用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会给你一个更完整的答案。