c# - 正则表达式 - 匹配捕获组中的第一个和最后一个字符

标签 c# regex

我想捕获捕获组中的第一个和最后一个字符。

我当前的 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/

相关文章:

c# - 无法从格式为 25-OCT-13 01.08.24.732000000 PM 的 Excel 文件解析 asp.net 中的日期时间

c# - 正则表达式匹配前面没有字母的数字

Python在字符串中查找Python字符串

具有继承性的 C# 访问修饰符

javascript - 需要正则表达式帮助,寻找重复模式

ruby - 除了某些字符外,如何匹配 `:punct:`?

regex - 具有多个捕获组的 pcregrep

c# - 模式对话框 - SharePoint 2010

c# - 有没有用 C# 将 Java 库编译成可包装的东西的例子?

c# - 如何创建数据表并传入信息?