Я пишу код на Mac и настраиваю регулярное выражение с шаблоном формата адреса электронной почты.
Формат: [имя получателя] @ [домен]. [Top-domain]
Имя получателя:
- может содержать цифры, буквы испециальные символы (ограниченные ".", "+", "-" и "_")
- не должны иметь последовательных специальных символов (., +, -, _)
он не должен начинаться / заканчиваться специальными символами.
Доменное имя
-может содержать цифры, буквы и символ "-"
Верхний домен
- либо com, net, либо org.
Я просто не знаю, как реализовать отрицательный обходной путь в c.
Ниже приведено регулярное выражение, которое у меня есть:
^(?!.*(__|--|\+\+|\.\.))(?!.*(_|\-|\+|\.$))[A-Za-z][A-Za-z0-9-+._]*@[A-Za-z0-9-]+\.(com|net|org)$
Я получил недопустимую ошибку операнда оператора повторения.
РЕДАКТИРОВАТЬ: Вот код, который я использовал:
#include <regex.h>
#include <stdio.h>
int main()
{
regex_t regex;
int status;
char buffer[100];
status=regcomp(®ex, "^(?!.*(__|--|\\+\\+|\\.\\.))(?!.*(_|\\-|\\+|\\.$))[A-Za-z][A-Za-z0-9-+._]*@[A-Za-z0-9-]+\\.(com|net|org)$", REG_EXTENDED);
regerror(status, ®ex, buffer, 100);
printf("%s\n", buffer);
}