Всем привет.
Столкнулся с такой проблемой.
Захотел использовать готовое регулярное выражение на проверку корректности введенных данных.
Использую метод из 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 ?