Regex 空格和散列(#)作为coffeescript正则表达式导致错误?

Regex 空格和散列(#)作为coffeescript正则表达式导致错误?,regex,parsing,coffeescript,runtime-error,Regex,Parsing,Coffeescript,Runtime Error,表达此问题的最简单方法是在repl中使用一个小示例: coffee> "hello".split(/: #/) #this is fine [ 'hello' ] coffee> "hello".split(/\s#/) #all good here too [ 'hello' ] coffee> "hello".split(/ #/) #wtf?? [stdin]:1:20: error: missing ) "hello".split(/ #/) 为什么最后一个正则表达

表达此问题的最简单方法是在repl中使用一个小示例:

coffee> "hello".split(/: #/) #this is fine
[ 'hello' ]
coffee> "hello".split(/\s#/) #all good here too
[ 'hello' ]
coffee> "hello".split(/ #/)  #wtf??
[stdin]:1:20: error: missing )
"hello".split(/ #/)
为什么最后一个正则表达式不起作用?从玩一点来看,任何与
^+..*.$
匹配的正则表达式似乎都会出现错误。注意,这是正则表达式开头的一个空格。(例如
/foo#bar/
,但不是
/foo bar#baz/

这是解析器中的错误吗


(在
Arch Linux
上运行
CoffeeScript 1.7.1版

因为CoffeeLexer正在尝试确定第一个
/
是除法运算符还是正则表达式的开始,并且在这种情况下猜错了。是相关代码。我不确定这是否是一个错误

如果将其放入文件中:

"hallo".match / #/
  1
然后使用
coffee-p
您将看到它被解析为除法运算符。 如果您在开始时添加一个非捕获组,您将得到一个表达式(几乎,因为它占用了更多的空间和可忽略的正则表达式编译时间),该表达式与您想要的表达式相当:

"hall #o".match /(?:) #/
编辑:

正如已经指出的,在空格前面加一个反斜杠可能更容易

"hall #o".match /\ #/

我可能会使用
/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>,反斜杠是常见的。啊,我一直在尝试使用
/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。换言之,逃离太空的好处是。我们认为这是一只虫子吗?我应该在github上打开一个问题吗?再次感谢。你能在github上发布一些问题吗?我只是在找它。