【问题标题】:Find Razor used inside script tags查找脚本标签中使用的 Razor
【发布时间】:2013-03-07 15:21:59
【问题描述】:

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

【问题讨论】:

  • 如果有人想知道为什么,假设我“迟到”参加聚会,我必须清理垃圾。 Razor 与 JavaScript 混合是有史以来最糟糕的主意!
  • 我的解决方案对您有用吗?
  • 不,这没有匹配。不过谢谢
  • 我在 VS 2010 Pro 中使用快速查找(选择使用正则表达式)尝试了我的正则表达式,它在您的示例数据上运行良好。

标签: regex asp.net-mvc visual-studio-2010 razor visual-studio-2012


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 1970-01-01
    • 2012-07-03
    • 2023-01-03
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2010-11-30
    • 2012-04-22
    相关资源
    最近更新 更多