有人知道这个 JavaScript 错误来自哪里吗?
SyntaxError: expected expression, got '.'
使用带有斜杠(转义)的正则表达式时出现此错误,例如el.href.match(/video\/(.*)@/)[1];
传递给 createTextNode、textContent 或 innerHTML 等函数的字符串。
此正则表达式在不存储为文本时有效。一个没有斜杠的正则表达式作为文本工作,你可以看到我的代码示例:
HTML:
<a style="display: none; width: 840px; height: 472px;" href="http://videos.francetv.fr/video/147338657@Info-web" id="catchup" class="video"></a>
JavaScript:
var el = document.getElementById("catchup");
var script = document.createElement("script");
var text = `
(function() {
var id = el.href.match(/video\/(.*)@/)[1];
alert("test 4 - regex with slash as text: " + id);
})();`;
script.appendChild(document.createTextNode(text));
document.getElementsByTagName("head")[0].appendChild(script);
工作和失败的测试可以在这里找到:
您可以在 GitHub Pages 上对其进行实时测试(JSFiddle 在我的情况下不起作用):