未捕获的SyntaxError:意外的令牌;

时间:2014-03-03 06:55:40

标签: javascript jquery

我在Uncaught SyntaxError: Unexpected token ;

获得THE LINE NUMBER
    // HTML Helper
    var documentHtml = function(html){
        // Prepare
        var result = String(html)
            .replace(/<!DOCTYPE[^>]*>/i, '')
            .replace(/<(html|head|body|title|meta|script)([s>])/gi,'<div class="document-$1"$2')
            .replace(/</(html|head|body|title|meta|script)>/gi,'</div>')
        ;  // << THE LINE NUMBER 
        // Return
        return $.trim(result);
    };

不确定是什么问题。

2 个答案:

答案 0 :(得分:2)

问题是:

/</(html|head|body|title|meta|script)>/gi

在撰写本文时,SO的突出显示了原文的问题:正则表达式似乎是/</

应该是:

/<\/(html|head|body|title|meta|script)>/gi

由于Javascript使用正斜杠来分隔正则表达式,因此必须使用反斜杠转义其中的任何正斜杠。


IMO使用正斜面的正斜杠是JavaScript最不幸的语法决定:

  1. 解析JavaScript很困难,因为/启动了多行注释,单行注释,除法和正则表达式。 (Sublime,我的编辑选择,错了。Dreamweaver弄错了。)

  2. 它使URI / URL的正则表达式特别难看。

答案 1 :(得分:1)

尝试改变:

.replace(/</(html|head|body|title|meta|script)>/gi,'</div>')

为:

.replace(/<\/(html|head|body|title|meta|script)>/gi,'<\/div>')

您需要在Javascript

中使用/转义\