Javascript Prettify.JS无法正确显示HTML脚本标记

Javascript Prettify.JS无法正确显示HTML脚本标记,javascript,regex,prettify,Javascript,Regex,Prettify,我正在使用Prettify.JS在我正在开发的网站上显示一些代码。我似乎对脚本标记有一些问题,尤其是“非链接”标记: <pre> // Link CSS &lt;link rel=&quot;stylesheet&quot; href=&quot;device.css&quot; /&gt; // Link JQuery &lt;script type=&quot;text/javascript&quot; s

我正在使用Prettify.JS在我正在开发的网站上显示一些代码。我似乎对脚本标记有一些问题,尤其是“非链接”标记:

<pre>
// Link CSS
&lt;link rel=&quot;stylesheet&quot; href=&quot;device.css&quot; /&gt;

// Link JQuery
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.7.1.min.js&quot;&gt;&lt;/script&gt;

// Link DeviceJS
&lt;script type=&quot;text/javascript&quot; src=&quot;device.min.js&quot;&gt;&lt;/script&gt;

// Initialize DeviceJS
&lt;script&gt;
    $(document).ready(function () {
        $('selector').devicejs(options);
    });
&lt;/script&gt;
</pre>
<pre>
// Link CSS
&lt;link rel=&quot;stylesheet&quot; href=&quot;device.css&quot; /&gt;

// Link JQuery
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.7.1.min.js&quot;&gt;&lt;/script&gt;

// Link DeviceJS
&lt;script type=&quot;text/javascript&quot; src=&quot;device.min.js&quot;&gt;&lt;/script&gt;

// Initialize DeviceJS
&lt;script<span style="display:none;"> t</span>&gt;
    $(document).ready(function () {
        $('selector').devicejs(options);
    });
&lt;/script&gt;

&lt;script<span style="display:none;"> t</span>&gt;
    $(document).ready(function () {
        $('selector').devicejs(options);
    });
&lt;/script&gt;
</pre>
['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],

//链接CSS
link rel=“stylesheet”href=“device.css”/
//链接JQuery
script type=“text/javascript”src=“jquery-1.7.1.min.js”/script
//链接设备
script type=“text/javascript”src=“device.min.js”/script
//初始化DeviceJS
剧本
$(文档).ready(函数(){
$('selector').devicejs(选项);
});
/剧本
此代码显示以下内容(请注意,整个脚本标记为红色):

但是,当我在下面做这个小技巧时(在关闭开始脚本标记之前添加一些不可见的html):


//链接CSS
link rel=“stylesheet”href=“device.css”/
//链接JQuery
script type=“text/javascript”src=“jquery-1.7.1.min.js”/script
//链接设备
script type=“text/javascript”src=“device.min.js”/script
//初始化DeviceJS
脚本t
$(文档).ready(函数(){
$('selector').devicejs(选项);
});
/剧本
它似乎显示Ok(正常):

问题是,当我添加多个非链接脚本标记块时,问题再次出现。因此,以下代码:


//链接CSS
link rel=“stylesheet”href=“device.css”/
//链接JQuery
script type=“text/javascript”src=“jquery-1.7.1.min.js”/script
//链接设备
script type=“text/javascript”src=“device.min.js”/script
//初始化DeviceJS
脚本t
$(文档).ready(函数(){
$('selector').devicejs(选项);
});
/剧本
脚本t
$(文档).ready(函数(){
$('selector').devicejs(选项);
});
/剧本
显示如下:

我浏览了Prettify.JS源代码,在第1211行我看到了以下内容:

([\s\S]*?)
(<\/script\b[^>]*>)
['lang-js',/^]*>([\s\s]*?)(]*>)/i],
我相信这是lexer的一部分

我不是一个Regex忍者,所以我希望能得到任何帮助,我可以调整它,使Prettify.JS可以容纳没有属性的非链接脚本标记

提前感谢。

一个示例显示了这一点,因此我怀疑您的问题与美化没有将内容识别为HTML,因此使用了错误的语言处理程序有关。如果看不到你是如何运用美貌的,很难说


我浏览了Prettify.JS源代码,在第1211行我看到了以下内容:

([\s\S]*?)
(<\/script\b[^>]*>)
非贪婪地匹配关闭标记之前所需的最小字符数。这是在捕获组1中,因此将使用类型提示
lang js
递归地美化此内容

最后

(]*>)

与“打开”标记类似,但它是一个“关闭”标记。它可能不在捕获组中,但这不应影响正确性。

您如何美化它?通常,
标签上必须有
class=“prettyprint”
,而这些标签上没有。您正在使用编程API吗?如果是,用什么语言提示?是的,我已经有了那套。对不起,我应该加上这一点,因为我指的是
标签。如果它们是空的,它就不起作用。例如,你必须有
,否则它就会像我刚才描述的那样。我想看看是否可以更新lexer中的正则表达式来解决这个问题。如果没有,我就用一个属性来定义它。@ChuckUgwuh,这个正则表达式中没有任何东西会阻止它匹配
。你使用的是什么版本?我现在使用的是他们网站上的最新版本:prettify-small-1-Jun-2011.tar.bz2。我的意思是类似于
\n一些javascript\n
(<\/script\b[^>]*>)