22.12.2020, 07:28 | #1 |
Участник
|
регулярные выражения в 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 |
Участник
|
Можно ставить символ экранирования \ перед служебными символами.
Тогда будет компилироваться. Добавьте еще вывод в инфолг чтобы проконтролировать что Строка точно такая получилась как надо. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|