Многострочный валидатор регулярных выражений - PullRequest
2 голосов
/ 23 февраля 2010

В моей веб-форме ASP.NET у меня есть многострочная TextBox, которая должна быть проверена с помощью RegularExpression Validator. Текстовое поле должно содержать одну или несколько строк «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>

В этой веб-форме больше ничего нет. Я только добавил эти элементы управления и измененные свойства. Я даже сделал все это, используя VS GUI.


Использование CustomValidator и выполнение Regex.Match(TextBox1, @"(?m:(^a$)+)") в нем работает просто отлично. Я думаю, что-то не так с RegularExpressionValidator.

1 Ответ

0 голосов
/ 23 февраля 2010

Если вы хотите сопоставить несколько строк, не забудьте также сопоставить терминаторы строк; они не подразумеваются в $.

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

может работать лучше.

Это соответствует

a

или

a
a
a

и т.д.

И, поскольку вы запрашиваете учебник, как насчет регулярные-выражения.info ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...