如果我在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字符编码替换百分号吗?
答案 0 :(得分:1)
您的视图模板引擎(可能是EJS)正在尝试插入部分正则表达式 - <%
表示“代码从此处开始”。
这不是最优雅的解决方案,但您可以强制模板将这些符号作为字符串处理,方法是将它们插入到文本中。尝试以下内容:
<script>
var foo = /<%= '<' + '%' %>([\s\S]+?)<%= '%' + '>' %>/g;
</script>
答案 1 :(得分:1)
我刚安装了快速服务器并加载了EJS来测试它。当我尝试它时,逃避百分号。我不知道这是否会搞砸你想要的东西。
var foo = /<\%([\s\S]+?)\%>/g;