如何为捕获和组正则表达式中括号内的不同字符设置特定范围
How to set a specific range for different characters inside in a bracket that inside in a capture and group regex
我正在尝试为电子邮件提供正则表达式。以下是一些示例:
2020-08-22 marie_curie@hotmail.com
2018-10-22 ab234c_d@gmail.com
用户名部分至少包含1个字符(字母字符)但不超过15个,不能超过3个数字或特殊字符(-,_,&)。
这些字符可以任意顺序
我为用户名部分尝试了几个正则表达式,但我无法控制数字和特殊字符。这是我的正则表达式:
(19\d\d|20\d\d)-(0[1-9]|1[0-2])-([0-2][0-9]|30)\s+([a-z 0-9 _-&]){1,15}@(hotmail|gmail|outlook).com
我怎样才能给他们一个特殊的范围?
一些用户名示例:
marie_curi
ab567cd
kd89as_
abcd
您可以使用
^(?:19|20)\d\d-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])\s+(?!(?:[^@]*[0-9_&-]){3})[a-z0-9_&-]{1,15}@(?:hotmail|gmail|outlook)\.com$
详情:
^
- 字符串的开头
(?:19|20)\d\d-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])
- 类似字符串的日期时间,首先是年份(仅 19xx
和 20xx
),然后是连字符,然后是月份(1
或 01
到 12
), -
, 然后 01
/ 1
到 31
\s+
- 1+ 个空格
(?!(?:[^@]*[0-9_&-]){4})[a-z0-9_&-]{1,15}
- 1 到 15 个字母数字和 _
、&
或 -
不超过三位数的字符,_
、&
或 -
是允许的(3 是允许的)
@
- 一个 @
字符
(?:hotmail|gmail|outlook)
- 三个值之一,hotmail
、gmail
或 outlook
\.com
- .com
字符串
$
- 字符串结尾。
我正在尝试为电子邮件提供正则表达式。以下是一些示例:
2020-08-22 marie_curie@hotmail.com
2018-10-22 ab234c_d@gmail.com
用户名部分至少包含1个字符(字母字符)但不超过15个,不能超过3个数字或特殊字符(-,_,&)。
这些字符可以任意顺序
我为用户名部分尝试了几个正则表达式,但我无法控制数字和特殊字符。这是我的正则表达式:
(19\d\d|20\d\d)-(0[1-9]|1[0-2])-([0-2][0-9]|30)\s+([a-z 0-9 _-&]){1,15}@(hotmail|gmail|outlook).com
我怎样才能给他们一个特殊的范围?
一些用户名示例:
marie_curi
ab567cd
kd89as_
abcd
您可以使用
^(?:19|20)\d\d-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])\s+(?!(?:[^@]*[0-9_&-]){3})[a-z0-9_&-]{1,15}@(?:hotmail|gmail|outlook)\.com$
详情:
^
- 字符串的开头(?:19|20)\d\d-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])
- 类似字符串的日期时间,首先是年份(仅19xx
和20xx
),然后是连字符,然后是月份(1
或01
到12
),-
, 然后01
/1
到31
\s+
- 1+ 个空格(?!(?:[^@]*[0-9_&-]){4})[a-z0-9_&-]{1,15}
- 1 到 15 个字母数字和_
、&
或-
不超过三位数的字符,_
、&
或-
是允许的(3 是允许的)@
- 一个@
字符(?:hotmail|gmail|outlook)
- 三个值之一,hotmail
、gmail
或outlook
\.com
-.com
字符串$
- 字符串结尾。