【问题标题】:Issue with regex when I mix razor and JS and use <text> </text>当我混合 razor 和 JS 并使用 <text> </text> 时出现正则表达式问题
【发布时间】:2016-10-21 14:21:08
【问题描述】:

这个问题是我了解这个语法的好问题Mix Razor and Javascript code 的结语:

@if (foo)
{
    // C# code
    <text>
    // JS Code
    </text>
}

直到今天,当我在 &lt;text&gt;&lt;/text&gt; 中使用 JS 正则表达式时,它都运行良好:

$('#bar').html(boo.replace(/<br([\/ ]*)>/g, "\r\n"));

这会抛出一个黄页,告诉我br( 存在无法分析的问题。

有没有内联的方式来处理它?

【问题讨论】:

  • 你试过逃避它吗? /\&lt;br([\/ ]*)&gt;/
  • @MikeC 同样的结果:/
  • 您可以尝试Using javascript regex containing '@' in razor 的答案中建议的@() 语法。此外,Using Razor within JavaScript 上有一个很好的答案可能会有所帮助。更新您的标题以反映您有尖括号可能会很好。否则,由于标题就像大量其他问题一样,看起来像是重复的。

标签: javascript c# regex razor


【解决方案1】:

(替换我之前的答案)

我在 MVC 视图中测试了这段代码,它可以工作:

<div id="bar" style="border: 1px solid black">
    Dummy content (should be replaced)
</div>
<script type="text/javascript">
    var boo = "<span>hello<br />world</span>";
    var symbolLT = "<";
    @if (1 == 1)
    {
        // C# code
        <text>
        var regex = new RegExp(symbolLT + "br([\/ ]*)>", "g");
        $('#bar').html(boo.replace(regex, "\r\n"));
        </text>
    }
</script>

诀窍是将"&lt;" 字符从&lt;text&gt;&lt;/text&gt; 块中分离出来, 以使用new RegExp()。也许比普通的内联表达式可读性差一些,但它确实有效。

或者您可以简单地在页面的前面创建正则表达式,在 &lt;text&gt;&lt;/text&gt; 块之外,然后在内部使用它。

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多