使用type =“text / javascript”匹配HTML脚本标记的正则表达式

时间:2012-11-28 16:28:33

标签: regex textmate sublimetext2

我正在使用Backbone应用程序的模板,这些应用程序存储在<script type="text/template">元素的HTML中,但这变得令人沮丧,因为Sublime Text将模板中的HTML着色,就好像它是Javascript一样。我想让编辑器将这些脚本标记视为与普通HTML标记相同。

我已经尝试修改HTML.tmLanguage上source.js.embedded.html块中的正则表达式,但是对于那些对正则表达式缺乏经验的人来说,我无法做到正确。

有什么想法吗?

我相信,这是需要修改的tmLanguage文件的相关部分:

                <key>begin</key>
                <string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string>
                <key>captures</key>
                <dict>
                    <key>1</key>
                    <dict>
                        <key>name</key>
                        <string>punctuation.definition.tag.html</string>
                    </dict>
                    <key>2</key>
                    <dict>
                        <key>name</key>
                        <string>entity.name.tag.script.html</string>
                    </dict>
                </dict>
                <key>end</key>
                <string>(&lt;/)((?i:script))</string>

1 个答案:

答案 0 :(得分:1)

我认为你应该编辑另一个值:

        <key>begin</key>
        <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)</string>
        <key>beginCaptures</key>
        <dict>
            <key>1</key>
            <dict>
                <key>name</key>
                <string>punctuation.definition.tag.html</string>
            </dict>
            <key>2</key>
            <dict>
                <key>name</key>
                <string>entity.name.tag.script.html</string>
            </dict>
        </dict>

并替换(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)

(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)(?![^&gt;]*type="text/template")