首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式:字符串的开头和结尾,具有指定长度的字母。

正则表达式:字符串的开头和结尾,具有指定长度的字母。
EN

Stack Overflow用户
提问于 2021-03-21 08:21:42
回答 2查看 68关注 0票数 0

我使用这个模式,但我没有得到答案。Regex reg = new Regex(@"^([A-Za-z][A-Za-z0-9\.]*(?:[A-Za-z])){6,30}@mydomain.com$");

我希望我的字符串以字母开头,以字母结尾,以字母、数字和点组合而成,前提是它长在6到30个字符之间。

例如: a.124b@mydomain.com或abc.1e@mydomain.com和..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-21 08:35:02

代码语言:javascript
复制
    string pattern = @"^[a-z][a-z0-9.]{4,28}[a-z]@mydomain\.com$";
    string input = @"a.124b@mydomain.com";
    RegexOptions options = RegexOptions.IgnoreCase;
    
    foreach (Match m in Regex.Matches(input, pattern, options))
    {
        Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
    }

现在的解释是:

  • 字符串的^[a-z]开头,和一个字母
  • [a-z0-9.]{4,28}字母、数字和点字符(在方括号中不需要转义),重复4到28次
  • [a-z]另一个字母
  • (组合字符为6至30个字符)
  • @mydomain\.com$其余的邮件地址和字符串结束。

还请注意RegexOptions.IgnoreCase -当您知道您不关心大小写时,它会使字母组更易读

您在正则表达式中所做的错误是为您的完整捕获组添加了量词--这意味着重复整个组的6-30次。

我还建议您满足所有regex需要的https://regex101.com/

票数 3
EN

Stack Overflow用户

发布于 2021-03-21 08:34:16

以下是一个选择:

代码语言:javascript
复制
^(?![0-9.]|.*[0-9.]@)[a-zA-Z0-9.]{6,30}@mydomain\.com$

请参阅在线演示

  • ^ -启动线锚.
  • (?![0-9.]|.*[0-9.]@) -负向前看,以防止在"@“之前以点/数字或结束点/数字开始。
  • 类中指定的[a-zA-Z0-9.]{6,30} - 6-30个字符.
  • @mydomain\.com -字面上匹配"@mydomain.com“。注意点前面的反斜杠使其为文字(在字符类之外)。
  • $端线锚.

我本来想提一个对案件不敏感的替代方案,但看起来像@FranzGleichmann给了你盖住 =)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66730176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档