gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:58 25 4
gpt4 key购买 nike

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com