Класс проверки Axapta - PullRequest
       9

Класс проверки Axapta

2 голосов
/ 16 ноября 2009

Я написал метод для обработки проверки регулярных выражений в AX2009. Проблема в том, что он всегда возвращает false независимо от выражения или входной строки. Не возвращает ошибок, просто «ложь». Я, наверное, упускаю что-то простое.

Это сообщение было обновлено и теперь содержит исправленный метод, без ошибок, поэтому вы можете вырезать и вставить код для использования в вашем проекте. BP-совместимый и готовый к использованию. - Наслаждайтесь

static boolean validateMe(str regexFilter, str _testString)
{
    System.Text.RegularExpressions.Match regExMatch;
    boolean retVal;
    str regExpression;
    ;

    //See if any of the static expressions were selected
    switch (regexFilter)
    {
        case 'integer' :
            regExpression = '^\\d+$';
            break;
        case 'rgbcolor' :
            regExpression = '^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\,([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\,([01]?\\d\\d?|2[0-4]\\d|25[0-5])$';
            break;
        case 'number' :
            regExpression = '^(\\d+\\.?\\d*|\\d*\\.?\\d+)$';
            break;
        case 'email' :
            regExpression = '^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$';
            break;
        case 'phone' :
            regExpression = '^(\\()?(\\d{3})(\\)|-)?([0-9]{3})(-)?([0-9]{4}|[0-9]{4})$';
            break;
        case 'nopunctationphone' :
            regExpression = '^\\d{10}$';
            break;
        default :
            //No static expression matched, use the passed-in value
            regExpression = regexFilter;
    }

    //see if the string matches
    if (_testString != '')
    {
        //see if string matches expression; validation is good
        regExMatch = System.Text.RegularExpressions.Regex::Match(_testString, regExpression);
        retVal = regExMatch.get_Success();
    }
    else
    {
        //string does NOT match expression; validation fails
        retVal = false;
    }

    return retVal;
}

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Вы поменяли местами переменные, это должно быть:

regEx = new System.Text.RegularExpressions.Regex(regExpression);
0 голосов
/ 16 ноября 2009

Может быть, вам нужно избежать обратной косой черты внутри строк?

regExpression = '^\\d*$';

и т.д.

...