【发布时间】:2019-03-23 07:25:07
【问题描述】:
我正在使用 Mac 进行编码,并且正在使用电子邮件地址格式的模式设置正则表达式。
格式为 [recipientname]@[domain].[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);
}
【问题讨论】:
-
你用的是什么正则表达式库?显示您的代码。
-
现有有 已知正确的电子邮件地址正则表达式。生产可能损坏的用例是什么?