2014-03-03 68 views
1

我在THE LINE NUMBER未捕获的SyntaxError:意外的标记;

// 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); 
    }; 

不知道什么是错的越来越Uncaught SyntaxError: Unexpected token ;

回答

2

的问题是:

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

在写这篇文章的时候,SO的高亮显示与原来的问题:正则表达式似乎是/</

它应该是:

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

由于JavaScript使用正斜杠分隔的正则表达式,你必须逃脱它里面的任何正斜杠用反斜杠。


IMO,使用正斜杠适用于正则表达式是JavaScript的最不幸的语法决定:

  1. 解析JavaScript是困难的,因为/开始多行注释,单行注释,分裂和正则表达式。 (Sublime,我的编辑选择,它错了,Dreamweaver得到了错误。)

  2. 它使得URIs/URLs的正则表达式特别丑。

+1

好与\逃跑/,我认为这是一个真正伟大的语法决定。 =)解析URL和HTML是不方便的 - 这两件事情永远不应该用正则表达式来解析。 – Ryan

+0

@minitech,匹配网址路径如何'/^\/some \/path \/prefix \ /.*/。test(path)'(我相信这是OP正在做的事情)。那有什么问题? –

+0

这看起来像你的URL路径? '/ <(HTML |头|体|标题|元|脚本)> /'? – Ryan

1

尝试改变:

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

到:

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

您需要在Javascript

相关问题