在剃刀中使用包含'@'的javascript正则表达式

问题描述:

我正在使用JavaScript在剃刀视图页面中执行电子邮件地址验证。 我将使用正则表达式类似于在Validate email address in JavaScript?在剃刀中使用包含'@'的javascript正则表达式

然而提出的一个,因为正则表达式中包含“@”字符,我得到解析器错误时尝试运行Web应用程序。

我正则表达式看起来像

/^...otherpart @* ... other part$/ 

我尝试添加一个“@”字符,使在原点的正则表达式... @@ * ......,这消除了编译错误,但似乎使正则表达式停止工作。 (我们已经在另一个不使用剃须刀引擎的网络应用程序中使用它,所以我知道它的工作原理)。

有没有其他办法可以逃避'@'字符?

+0

你有没有试过用''包装你的脚本块? – Jasen

+0

@Jasen我还没有试过的伎俩。明天再试,让你知道结果。 –

+0

如果你使用这个脚本有几个地方,把它放在它自己的.js文件中可能是一个好主意。单个验证规则(如max/min)可以放入元素的数据属性中,并通过jQuery读取。 – jfrankcarr

您可以在其前面添加另一个@以转义@@,尝试省略量化*。如果这看起来不起作用,那么围绕该函数添加<text></text>,它告诉剃刀不要分析内容。或者,您可以将Javascript放在单独的文件中以完成您的需求。

如果由于某种原因,你在你的字符串有多个@@,提前到位代码块@:@@

+1

我试了几件事......'',用'@:'开始行,但只有'@@'似乎可以做到这一点。另一种选择是使用单独的文件。 – Jasen

+0

同意但它不起作用。 – Jasen

+2

我倾向于把所有这些都放到一个单独的文件中,而不是写一个时髦的正则表达式来满足Razor解析器。有时很难理解正则表达式模式,而不必考虑转义字符。 – Jasen

把正则表达式中的下列代替@:

@('@') 

以上将被渲染到一个@。

你的榜样将成为:

/^...otherpart @('@')* ... other part$/ 
+0

这应该是公认的答案!加倍@@改变你的REGEX,那不是你想要的。不过,我希望有更好的方式来看待剃刀上的@符号,比如\ @ –

只是简单地使用双@@
它适用于我,我认为这是唯一的方法。