代码之家  ›  专栏  ›  技术社区  ›  JVDev

如何在JavaScript中保留一个反斜杠?

  •  0
  • JVDev  · 技术社区  · 1 年前

    我正在做一个项目,这个字符串 ^\S+@demo\.com$ 存储在参数中。 可以使用在JS部分中检索它 @Params.RegexMail .

    我无法修改的值 @参数。RegexMail 预先

    我试过了 console.log("@Html.Raw(@Params.FiltreEmail)"); 甚至

    var x = "@Html.Raw(@Params.FiltreEmail)".replace("\\", "\\\\"); 
    console.log(x);
    

    但最终双方都回来了 ^ [email protected] $ .

    我的目标是能够定义以下正则表达式:

    var exp = ("@Html.Raw(@Params.FiltreEmail)" !== "") ? "@Html.Raw(@Params.FiltreEmail)" : "(.*)";
    var regex = new RegExp(exp);
    

    我怎样才能做到这一点?

    2 回复  |  直到 1 年前
        1
  •  0
  •   mplungjan Gvidas    1 年前

    这个 .replace("\\", "\\\\") 只会替换第一个集合,但它们在声明时已经丢失。

    而是使用服务器端JSON编码:

    // @using System.Web.Helpers
    
    let escapedRegex = `^\\S+@demo\\.com$` // "@Html.Raw(Json.Encode(Params.FiltreEmail))"; // Server-side rendering happens here
    
    console.log(escapedRegex); // Check if the escaping is done right
    
    let exp = escapedRegex? escapedRegex : "(.*)";
    let regex = new RegExp(exp);
    console.log(regex); // This should now show /^\S+@demo\.com$/ or /(.*)/
        2
  •  -1
  •   Mehr Xavia    1 年前

    如果在将包含正则表达式的字符串直接记录到控制台时没有看到任何斜杠,则表明斜杠在到达控制台之前已被删除或以不同的方式进行解释。这可能是由于您在处理字符串时所使用的框架或环境的方式。

    在这种情况下,请尝试使用 console.log(String.raw(filtreEmail));