ASP.Net RegularExpression Validator - Ошибка синтаксического анализа - PullRequest
0 голосов
/ 24 января 2010

Я хотел написать регулярное выражение, используя валидатор ASP.Net RegExp, который бы гарантировал, что поле содержит только числовые и десятичные значения и хотя бы один символ.

^[0-9]{1,40}(\.[0-9]{1,2})?$

По существу: [0-9]{1,40} - означает от 1 до 40 числовых символов.

Валидатор регулярных выражений ASP.Net не запускается для пустого поля, где нет хотя бы одного символа.

Обходной путь: использование пользовательского валидатора с проверкой регулярных выражений в Javascript:

 function validateMinTrans(sender, args) {
        var error = true;
        var txtMinTrans = document.getElementById('TxtMinTrans');
        var regexp = new RegExp("^[0-9]{1,40}(\.[0-9]{1,2})?$");
        if (txtMinTrans.value.match(regexp)) {
            alert("good");
        }
        else {
            alert("bad");
        }

        if (error)
            args.IsValid = false;
        else
            args.IsValid = true;
    }

Таким образом, мне даже не нужно проверять txtMinTrans.length == 0.

Интересно, испытал ли это кто-нибудь еще?

Ответы [ 2 ]

1 голос
/ 24 января 2010

Валидаторы ASP.NET обычно не запускаются для пустых полей; вам нужно добавить RequiredFieldValidator, если вы хотите проверить это. Нет проблем с наличием двух валидаторов в одном поле.

Это позволяет вам иметь необязательные поля: просто наличие только RegularExpressionValidator означает «либо пусто, либо соответствует этому регулярному выражению».

0 голосов
/ 24 января 2010

Валидатор Regex действительно не запускается, если поле не имеет значения. Тем не менее, вы также можете поместить RequiredFieldValidator , указывающий на один и тот же элемент управления TextBox, так что оба будут справляться со своими обязанностями - пустым и шаблоном.

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