Показать сообщение отдельно
Старый 22.12.2020, 07:28   #1  
oleggy is offline
oleggy
Участник
 
282 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
регулярные выражения в AX: System.Regex или str.match
Всем привет.
Столкнулся с такой проблемой.
Захотел использовать готовое регулярное выражение на проверку корректности введенных данных.
Использую метод из C#, но вот как его использовать корректно?

X++:
static void _Regexp(Args _args)
{
    str text;
    boolean res;
    
    // c этим определением - ошибки копиляции нет, но оно очень простое
    #define.EmailRegexp("^.+@.+\\..+$|^$")
    
    // нашел в инете готовое рег. выражение
    // c этим определением - ошибка копиляции, проблема в одновременном использовании символов ' и "
    //#define.EmailRegexp('^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$')

    boolean RegexIsMatch(str _string, str _netRegexp)
    {
        boolean retval;
        InteropPermission permission;
        System.Text.RegularExpressions.Regex re;
        ;
        permission = new InteropPermission(InteropKind::ClrInterop);
        permission.assert();

        re = new System.Text.RegularExpressions.Regex(_netRegexp);
        retval = CLRInterop::getAnyTypeForObject(re.IsMatch(_string));
        CodeAccessPermission::revertAssert();
        return retval;
    }
    ;

    text = 'test@test.com';

    if (!RegexIsMatch(text, #EmailRegexp))
        error("ошибка в email");
    else
        info("корректное email");
}


Вопрос, выходит нужно делать через str.match ?

Последний раз редактировалось oleggy; 22.12.2020 в 07:43.