反斜杠在RegularExpressionValidator中转义

时间:2010-03-16 09:49:12

标签: asp.net regex reg-expressionvalidator

我需要确保输入值至少包含一个点,所以我使用了以下内容:

<asp:RegularExpressionValidator runat="server" 
ControlToValidate="MyInput" Text="*" 
ErrorMessage="must contain at least one dot" 
ValidationExpression="\.+" />

这不起作用。通过检查页面源我可以看到ASP.NET转义反斜杠字符,所以在java脚本中它看起来像"\\.+"。为什么会这样做?我如何阻止RegularExpressionValidator转义呢?

2 个答案:

答案 0 :(得分:1)

双重转义是必要的,因为反斜杠用于JavaScript和正则表达式中的转义序列。快速测试来说明这一点:

alert('42'.match("\d"));     // no match
alert('42'.match("\\d"));    // match

但这并不能解决你的问题。麻烦的第一步:将验证表达式更改为a。是不是在“foo”上失败并传递“bar”?如果没有,页面上还有其他错误 - 可能是一个无关的JavaScript错误会导致跳过验证代码。

稍微偏离主题:你的验证表达式可以修剪为\.(没有加号),因为你真的只关心匹配一个点。

答案 1 :(得分:1)

如果要检查输入是否包含至少一个点,则表达式不正确。它仅匹配仅由点组成的输入。

你应该使用

.*\..*

如果逃避证明也是个问题,请使用[.]代替\.

请注意,RegularExpressionValidator不会验证空字段。使用RequiredFieldValidator执行此操作。