1

在 Visual Studio 2010/2012 中,如何找到所有可能包含与 Razor 混合的 javascript 的脚本标签?

这应该是匹配的:

<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}
4

1 回答 1

0

以下似乎有效。它假定<脚本标签之间没有。

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

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

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

于 2013-03-07T16:34:48.443 回答