我最近开始尝试使用jQuery模板,这依赖于您在SCRIPT
标记内包装HTML的能力。
<script id="movieTemplate" type="text/x-jquery-tmpl">
<li>
<b>${Name}</b> (${ReleaseYear})
</li>
</script>
问题是,TextMate自然地假设SCRIPT
标签内的任何内容都是JavaScript。我确信TextMate可以根据type
属性对内容进行不同的处理,但是我正在努力解决捆绑中使用的一些语法问题。我非常有信心下面这行是关键,但我不知道从哪里开始。
begin = '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)';
有没有人已经处理过类似的情况?有人能指出我正确的方向吗?
富
答案 0 :(得分:6)
begin = '(?:^\s+)?(<)((?i:script))\b(?!([^>]*text/x-jquery-tmpl[^>]*|[^>]*/>))';
将停止使用“text / x-jquery-tmpl”将脚本标记视为javascript
答案 1 :(得分:2)
这是一个正则表达式。您可以对其进行扩展,以检查类似text/javascript
的类型:
begin = '(?:^\s+)?(<)((?i:script))\b(.*?type="text/javascript")(?![^>]*/>.*)';
我只用if
测试了它,但它似乎有效。当类型为text/javascript
时,TextMate会将其扩展为Javascript以用于其使用PHP的其他每种类型。 (就像脚本标签之外的那样。)
您可以在此处详细了解TextMate如何使用正则表达式:Regex (TextMate Manual)
答案 2 :(得分:1)
匹配组是有意义的。您需要将其更改为:
begin = '(?:^\s+)?(<)((?i:script))\b(?:.*?type="text/javascript")(?![^>]*/>)';
为了保持当前的匹配组配置。