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

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

0
ClojureScript

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

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

(匹配网址)

结果证明它不是一个有效的 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
by

你好
你可以在这里玩 cljs 编译器

http://app.klipse.tech/

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

by
谢谢 @Enzzo。问题都在 REPL 中 :)
...