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

欢迎!请查看关于页面,了解有关此操作的更多信息。

0
ClojureScript

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

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

(匹配URLs)

然而,它不是一个有效的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

你好
你可以在这里与 cljs 编译器互动

http://app.klipse.tech/

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

谢谢 @Enzzo。问题是这一切都在 REPL 中 :)
...