3

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

编辑:我也发现了这个 -在 JavaScript RegExp 中复制 Java 的“Pattern.quote”的功能

4

2 回答 2

3

对此没有内置的 Clojure 或 Javascript 函数。

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

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

http://ideone.com/QXbbB

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

于 2012-08-16T05:41:13.103 回答
-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 的人,我很谨慎地肯定地说)。

编辑
哦,也许这个老问题的答案在这里:将用户输入字符串转换为正则表达式会给你一个更完整的答案。

于 2012-08-15T20:26:20.970 回答