2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!有关如何使用此功能的更多信息,请参阅 关于 页面。

0
ClojureScript

我有一个有效的 JavaScript 正则表达式

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/

(匹配 URL)

结果是它不是有效的 CLJS。它报错

#object[SyntaxError SyntaxError: unterminated parenthetical]

修改成

(def re #"^((([A-Za-z]{3,9}:(?://)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:/[\+~%/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!/\\\w]*))?)$")

(注意未转义 /)

有效。

这是 CLJS 的一个 bug 吗?

2 答案

+1

问题中的 JavaScript 示例使用 / 将表达式分隔。这不是唯一的方法。使用 / 作为分隔符自然需要在模式中转义字面量 /。

我想知道,如果您以另一种方式分隔正则表达式,您是否会得到相同的结果,例如 new RegExp('...');

0

您好
您可以在这里玩耍 cljs 编译器

http://app.klipse.tech/

此外,我在编码和正则表达式方面遇到了一些问题。请确保您的 HTML 编码为 UTF-8。

感谢 @Enzzo。这个问题实际上是在交互式环境(REPL)中出现的 :)
...