我需要确保输入值至少包含一个点,所以我使用了以下内容:
<asp:RegularExpressionValidator runat="server"
ControlToValidate="MyInput" Text="*"
ErrorMessage="must contain at least one dot"
ValidationExpression="\.+" />
这不起作用。通过检查页面源我可以看到ASP.NET转义反斜杠字符,所以在java脚本中它看起来像"\\.+"
。为什么会这样做?我如何阻止RegularExpressionValidator转义呢?
答案 0 :(得分:1)
双重转义是必要的,因为反斜杠用于JavaScript和正则表达式中的转义序列。快速测试来说明这一点:
alert('42'.match("\d")); // no match
alert('42'.match("\\d")); // match
但这并不能解决你的问题。麻烦的第一步:将验证表达式更改为a
。是不是在“foo”上失败并传递“bar”?如果没有,页面上还有其他错误 - 可能是一个无关的JavaScript错误会导致跳过验证代码。
稍微偏离主题:你的验证表达式可以修剪为\.
(没有加号),因为你真的只关心匹配一个点。
答案 1 :(得分:1)
如果要检查输入是否包含至少一个点,则表达式不正确。它仅匹配仅由点组成的输入。
你应该使用
.*\..*
如果逃避证明也是个问题,请使用[.]
代替\.
。
请注意,RegularExpressionValidator不会验证空字段。使用RequiredFieldValidator执行此操作。