根据TextMate中的属性修改HTML语法

kim*_*3er 11 html regex grammar textmate

我最近开始尝试使用jQuery模板,它依赖于你在SCRIPT标签中包装HTML的能力.

<script id="movieTemplate" type="text/x-jquery-tmpl">
    <li>
        <b>${Name}</b> (${ReleaseYear})
    </li>
</script>
Run Code Online (Sandbox Code Playgroud)

问题是,TextMate自然地假设SCRIPT标签内的任何东西都是JavaScript.我确信TextMate可以根据type属性对内容进行不同的处理,但我正在努力解决捆绑中使用的一些语法问题.我非常有信心下面这行是关键,但我不知道从哪里开始.

begin = '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)';
Run Code Online (Sandbox Code Playgroud)

有没有人已经处理过类似的情况?有人能指出我正确的方向吗?

丰富

dim*_*mus 6

begin = '(?:^\s+)?(<)((?i:script))\b(?!([^>]*text/x-jquery-tmpl[^>]*|[^>]*/>))';

将停止使用"text/x-jquery-tmpl"处理脚本标记作为javascript

  • 非常感谢你!这对我来说就像一个魅力....我在SublimeText2 HTML.tmLanguage中使用它作为:(?:^\s +)?(&lt;)((?i:script))\ b(?!([^ &GT;]*文本/ X-jQuery的TMPL [^&GT;]*| [^&GT;]*/&GT)) (3认同)

小智 2

这是一个正则表达式。您可以扩展它来检查text/javascript这样的类型:

begin = '(?:^\s+)?(<)((?i:script))\b(.*?type="text/javascript")(?![^>]*/>.*)';

我只用 测试过if,但它似乎有效。当类型为text/javascriptTextMate 时,它​​会针对使用 PHP 的所有其他类型将其扩展为 Javascript。(就像脚本标签之外一样。)

您可以在此处阅读有关 TextMate 如何使用正则表达式的更多信息:Regex(TextMate 手册)