为什么这会导致express.js出错?

时间:2014-02-23 14:19:36

标签: javascript regex node.js express

如果我在express.js提供的HTML页面中包含以下JavaScript代码段,则会收到错误消息。为什么呢?

<script>
    var foo = /<%([\s\S]+?)%>/g;            
</script>

错误:

500 SyntaxError: Unexpected token ILLEGAL...

修改:

整页:

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
    <script>
        var foo = /<%([\s\S]+?)%>/g;
    </script>
</body>
</html>

节点:v0.10.21 NPM:1.3.11 快递:3.3.8

编辑2:

如果删除百分号,则错误停止。我可以用他们的unicode字符编码替换百分号吗?

2 个答案:

答案 0 :(得分:1)

您的视图模板引擎(可能是EJS)正在尝试插入部分正则表达式 - <%表示“代码从此处开始”。

这不是最优雅的解决方案,但您可以强制模板将这些符号作为字符串处理,方法是将它们插入到文本中。尝试以下内容:

<script>
    var foo = /<%= '<' + '%' %>([\s\S]+?)<%= '%' + '>' %>/g;            
</script>

答案 1 :(得分:1)

我刚安装了快速服务器并加载了EJS来测试它。当我尝试它时,逃避百分号。我不知道这是否会搞砸你想要的东西。

var foo = /<\%([\s\S]+?)\%>/g;