提问者:小点点

用非工作C++部分组合正则表达式


所以这将是电子邮件地址的正则表达式。 用户名:大写和小写字母,数字,下划线和点

^[A-Za-z0-9._]+

然后是@和domain:大写字母,小写字母和数字

@[A-Za-z0-9]+

然后是点和TLD:至少2个字符(字母和数字),最多可以有一个点。 我以前都是至少2个字符,最多一个点:

([A-Za-z0-9]{2,}|[.]{0,1})

完整的正则表达式如下:

regex reg ("^[A-Za-z0-9._]+@[A-Za-z0-9]+\\.([A-Za-z0-9]{2,}|[.]{0,1})$");

但是最大一点规则不起作用。 当我输入zohal@gmail.df.g(当然不是real)时,它给出了false。 不过,它在zohal@gmail.com等其他情况下也能工作。


共1个答案

匿名用户

您可以使用

regex reg(R"(^[A-Za-z0-9._]+@[A-Za-z0-9]+(?:\.[A-Za-z0-9]+)+$)")

请参阅regex演示

详细信息

  • ^-字符串开始
  • [a-za-z0-9._]+-1个或多个字母,数字,._
  • @-@字符
  • [A-Za-z0-9]+-1个或多个字母或数字
  • (?:\.[A-Za-z0-9]+)+-出现1个或多个点,然后出现1个或多个字母或数字
  • $-字符串的结尾位置。

由于在@后面有两个+量化模式,因此您不需要显式的(?=(?:[^A-Za-z0-9]*[A-Za-z0-9]){2})前瞻来要求至少两个字母或数字。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(非|工作|c++|组合|正则表达式)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?