1

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

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

那是行不通的。通过检查页面源,我可以看到 ASP.NET 转义了反斜杠字符,因此在 java-script 中它看起来像"\\.+". 为什么会这样做,我如何防止 RegularExpressionValidator 转义它?

4

2 回答 2

1

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

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

但这并不能解决您的问题。故障排除的第一步:将验证表达式更改为a. 它不会在“foo”上失败并通过“bar”吗?如果没有,您的页面上还有其他问题 - 可能是不相关的 JavaScript 错误导致验证代码被跳过。

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

于 2010-03-16T09:53:39.700 回答
1

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

你应该使用

.*\..*

如果转义也被证明是一个问题,请使用[.]而不是\..

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

于 2010-03-16T09:55:28.447 回答