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 的错误吗?

2 个回答

+1

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

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

0

Hello
您可以在这里使用 cljs 编译器进行玩耍

http://app.klipse.tech/

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

感谢 @Enzzo。问题在于这全部都在 REPL 中 :)
...