ORACLE 正则表达式匹配具有两个或更多字符的电子邮件域

ORACLE regex Match email Domain with two or more characters

我需要能够接受只有两个或更多字符的电子邮件域,如下所示:

用我实际的正则表达式,我只用一个字符验证域,比如 a@b.com.

@([A-Z0-9]+(-[A-Z0-9]+)*\.){1,8}[A-Z]{2,63}$

预期结果:

"a@b.com" Not valid  (just one char after @)
"a@bb.com" Is Valid  (two chars after @)
"a@b-domain.com" Is valid  (two or more chars after @)

我只需要更改我的正则表达式以允许以至少 2 个字符开头的域。

谢谢。

作为上一期 previous question 中的建议,您可以使用

@([A-Z0-9]+-)*[A-Z0-9]{2,}\.[A-Z0-9]{2,63}$
  • @字面匹配
  • ([A-Z0-9]+-)* 0+ 重复 1+ 个字符 A-Z0-9 后跟 -
  • [A-Z0-9]{2,} 匹配 2 次或更多次 A-Z0-9
  • \.[A-Z0-9]{2,63}匹配一个点和2-63次A-Z0-9
  • $ 字符串结束

Regex demo

要允许使用连字符或下划线,您可以使用字符 class:

@([A-Z0-9]+[_-])*[A-Z0-9]{2,}\.[A-Z0-9]{2,63}$

Regex demo