1

在Visual Studio 2010/2012中,如何查找可能包含JavaScript与Razor混合的所有脚本标记?查找Razor内部脚本标记

这应该是比赛:

<script> 
    var hola = '@serverVariable'; 
    alert(hola); 
</script> 

<script> 
    var somenumber = @Int32.MaxValue; 
    alert(somenumber); 
</script> 

<script>   
    @if(someFlag) 
    {   
     @:alert('hello'); 
    }else{ 
     @:alert('bye'); 
    } 
</script> 

这不应该是比赛:

<script> 
    @* A valid comment *@ 
    alert(hola); 
</script> 

<script> 
    alert('hola @@'); 
</script> 

<script> 
    alert('hola'); 
</script> 

我想这是正则表达式,但需要VisualStudio的时间找到所有引用,它是递归我不知道如何打破递归。

<script{1}([\s\r\n]|.)*?[^*@]@[^*@]([\s\r\n]|.)*?</script{1} 
+0

如果有人想知道为什么,比方说我迟到了,我必须清理垃圾。 Razor与JavaScript混合在一起是有史以来最糟糕的想法! – 2013-03-07 15:23:03

+0

我的解决方案适合您吗? – MikeM 2013-03-08 11:43:37

+0

不,这没有匹配。但是,谢谢 – 2013-03-09 18:28:14

回答

0

以下似乎工作。它假定脚本标记之间没有<

\<script\>([^<]|\n)*[^*@]\@[^*@]([^<]|\n)*\</script\> 

@似乎需要在VS正则表达式来进行转义 - 这有时空格字符相匹配。
<>需要转义,否则它们会指示单词的开始/结束。

我建议您使用带有更好正则表达式引擎的文本编辑器,例如Notepad ++,或者尝试加载项:NET Regular Expressions Find and Replace Add-In for Visual Studio 2008