【问题标题】:Something wrong with RegularExpressionValidator正则表达式验证器有问题
【发布时间】:2013-11-15 07:09:01
【问题描述】:

我在aspx 页面中使用RegularExpressionValidator 控制FreeTextBox

<FTB:FreeTextBox id="FTB" runat="server" />
<asp:RegularExpressionValidator ID="rev" runat="server" ControlToValidate="FTB" ErrorMessage="Content cannot be only space character" ValidationExpression="[^\s]+"/>

我不想让文本只有空格字符。客户端必须输入一些a,b,c… 字符。

RegularExpressionValidator 拒绝文本中的任何空格字符(例如两个单词之间)。

【问题讨论】:

  • 特别是对于正则表达式验证器,表达式 [^\s]+ 意味着 整个文本 应该是非空格:有一个隐含的额外检查,匹配的部分是整个文本.

标签: c# asp.net reg-expressionvalidator


【解决方案1】:

这个正则表达式.*[^ ].* 匹配一个字符串,它只包含空格以外的内容。我测试了here

希望我能帮上忙!

【讨论】:

  • 你的意思是我应该改变:ValidationExpression=".*[^ ].*"
  • 当您说经过测试时,您的意思是使用 this 或 ASP.NET 引擎。你能告诉我不工作的情况吗? (只是看看我是否做对了)
  • 我按照您在regular-expressions.info/javascriptexample.html 的方式对其进行测试。然后我更改了 ValidationExpression=".*[^ ].*" 但程序仍然允许使用许多且只有空格字符的字符串
  • 奇怪!我认为 ASP.NET 中的 ValidationExpression 用于验证 javascript 空间中的正则表达式,就像我告诉你的测试站点一样。也许,您使用的特定控件出了点问题。无论 ASP.NET 是什么,您都可以尝试验证 javascript 空间中的特定控件内容...
【解决方案2】:

我认为您应该使用匹配空/非空内容的RequiredFieldValidator。其他验证器只是忽略空内容,因为听起来您在这里点击了此功能。

【讨论】:

  • 哦,我已经使用过RequiredFieldValidator,但似乎FreeTextBox 控件是第三方的(有人告诉我这个),所以RequiredFieldValidator 不显示错误消息。现在我必须同时使用RequiredFieldValidator 和RegularExpressionValidator 来控制FreeTextbox
【解决方案3】:

试试这个:

第一个解决方案:

^((?!\s).)*$

像这样:

.... ValidationExpression="^((?!\s).)*$" ....

第二种解决方案:
您可以使用标签而不是 regularExpressionValidator 控件,然后在按钮中使用以下代码:

Match s = Regex.Match(TextBox1.Text, @"^((?!\s).)*$");
if (!s.Success)
{
     Label1.Text = "Incorrect input!";
}

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多