【问题标题】:Regular expression multiline validator正则表达式多行验证器
【发布时间】:2011-01-20 06:09:37
【问题描述】:

在我的 ASP.NET Web 表单中,我有一个多行 TextBox,应该使用正则表达式验证器进行验证。文本框应包含一个或多个字符串“a”(只是 'a' 字符,没有其他内容)。

到目前为止,我的RegularExpressionValidator 对象得到了这些正则表达式:

(?m:(^a$)+)
(?m:\A(^a$)+\Z)
(?m:^a$)

还有一些其他的。两者都不起作用。猜猜我还没有掌握一些基本的东西。

你能告诉我哪里错了吗?

这是涉及的代码。

一个按钮(仅用于回发):

<asp:Button ID="Button1" runat="server" Text="Button" />

文本框:

<asp:TextBox ID="TextBox1" runat="server" Rows="10" TextMode="MultiLine"></asp:TextBox>

还有正则表达式验证器:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator" 
    ValidationExpression="(?m:(^a$)+)"></asp:RegularExpressionValidator>

该 Web 表单上没有其他内容。我只添加了这些控件并修改了属性。我什至使用 VS GUI 完成了所有这些操作。


使用 CustomValidator 并在其中执行 Regex.Match(TextBox1, @"(?m:(^a$)+)") 效果很好。我猜 RegularExpressionValidator 有问题。

【问题讨论】:

  • 你能提供一些有效字符串的例子吗?每行可以包含多个“a”字符还是仅包含一个“a”字符?
  • 嘿马可!这只是一个单一的“a”字符,这是为了简单起见。但实际上这不是重点。可以是任何表达式。

标签: asp.net regex validation multiline


【解决方案1】:

如果要匹配多行,别忘了还要匹配行终止符; $ 中没有隐含它们。

(?m:(^a$\r?\n?)+)

可能会更好。

这匹配

a

a
a
a

等等

而且,既然您要求提供教程,那么 regular-expressions.info 怎么样?

【讨论】:

  • 谢谢蒂姆,但它不起作用。 (?m:(^a\r?\n?$)+) 这个也不起作用。但是 (?m:(^a\r?\n?)+) 可以。关于 $ 的还有其他东西 :)
  • 感谢您的链接!做到了。但我会再看一遍,以防我错过了问题的答案。
  • 您在评论中写的最后一个正则表达式与我的答案完全相同。什么意思?
  • 不,不是。没有 $ 符号。
  • 哦,对了。但这应该没关系。我刚刚测试了我的正则表达式,它像宣传的那样工作。也许您应该使用您正在使用的实际代码更新您的问题 - 问题可能在其他地方。
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 2011-08-08
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多