AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.12.2020, 07:28   #1  
oleggy is offline
oleggy
Участник
 
270 / 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.
Старый 22.12.2020, 11:32   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Можно ставить символ экранирования \ перед служебными символами.
Тогда будет компилироваться. Добавьте еще вывод в инфолг чтобы проконтролировать что Строка точно такая получилась как надо.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: November 2018 Release – Dynamics AX2012 R3 update Blog bot DAX Blogs 0 15.11.2018 09:11
gideonvos: Easy Dynamics 365/AX Blockchain Integration Blog bot DAX Blogs 0 01.01.2018 12:15
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
daxsol: Axapta Kernel Functions Blog bot DAX Blogs 1 16.05.2009 19:22
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:50.