.Net RegularExpressionValidator совпадает с классом Regex - PullRequest
4 голосов
/ 24 марта 2009

Когда я использую элемент управления .Net RegularExpressionsValidator, выражение проверки соответствует тексту EXACT. Когда я говорю это, я имею в виду, что для строки, которую я даю для проверки, если она отклоняется от шаблона регулярного выражения, строка не проверяется.

например: (([0-1] [0-9]) | ([2] [0-3])): ([0-5] [0-9]) если данные в элементе управления RegularExpressionsValidator будут соответствовать только строкам, таким как -> 12:00, 07:15, 23:59, но не соответствуют строкам 12: 00foo, bar23: 00, foobar.

Теперь, когда я использую класс Regex в приведенном ниже коде и задаю ему то же регулярное выражение, он соответствует всем строкам, которые содержат совпадение, и любым другим символам.

ex: (используя то же регулярное выражение, что и в предыдущем примере), если я использую класс Regex, следующие строки будут соответствовать -> 12:00, 07:15, 23:59 И 12: 00foo (содержит совпадение), bar23: 00 (содержит совпадение).

Есть ли причина, по которой они обрабатываются по-разному, и есть ли способ имитировать то же поведение, что и элемент управления RegularExpressionValidator?

Заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 24 марта 2009

Что происходит, так это то, что валидатор регулярных выражений обрабатывает вашу строку как строку текста. Он неявно помещает ^ и $ matchers в начале регулярного выражения.

Это как сказать:

^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$

Вышеупомянутое выражение в Regex Class даст тот же результат, что и элемент управления validator.

0 голосов
/ 24 марта 2009

Один простой, универсальный способ заставить ваше регулярное выражение точно соответствовать строке, состоит в том, чтобы заставить его соответствовать от начала до конца строки следующим образом:

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