我想捕获捕获组中的第一个和最后一个字符。
我当前的 RegEx 是 -
([\w\.]+)@([\w]+)\.com
例如,如果有一个电子邮件地址 -
xyz@test.com
这是输出-
Full match 0-12 `xyz@test.com`
Group 1. 0-3 `xyz`
Group 2. 4-8 `test`
电子邮件地址可以包含字母数字和句点值。
如果我想缩减第 1 组,使其仅以字母数字值开始和结束,该怎么做?
我要修改这个捕获组 -
([\w\.]+)
所需的输出是 -
xyz.@test.com Invalid
.xyz@test.com Invalid
xy.z@test.com Valid
最佳答案
要告诉引擎在开始位置和 @
之前匹配英文字母数字字符,您需要这样做:
^([a-zA-Z0-9][\.a-zA-Z0-9]*[a-zA-Z0-9])@([a-zA-Z0-9]+)\.com$
注意:\w
包含您可能不想要的 _
。
但这不允许一个字符长的用户名。所以你必须稍微修改一下:
^([a-zA-Z0-9]+(?:\.+[a-zA-Z0-9]+)*)@([a-zA-Z0-9]+)\.com$
此外,这不应该被认为是一个好的电子邮件验证器。但是,由于您似乎缩小了与 .com
TLD 的匹配范围,所以我认为这是一个非常具体的要求,否则它将域名限制为字母数字,并且不允许更多的字符在电子邮件中有效地址根据RFC 822 .这足以从用户输入中捕获电子邮件地址:
^[^\s@]+@[^\s@]+$
关于c# - 正则表达式 - 匹配捕获组中的第一个和最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437788/