c# - 正则表达式 c# : Last Name in an email to include only one hyphen

标签 c# regex

friend 们, 我有一个文本框,它为我的组织取 firstname.Lastname。 姓氏可能包含也可能不包含连字符。如果包含,那么它应该出现, 1)姓氏只有一次 2) 不在姓氏开头 3) 不在姓氏末尾

我想通了这个正则表达式

^(?!.{51})[a-zA-Z]+(?:[.][a-zA-Z-]+)?$

这包括姓氏中的“-”。但不会满足以上条件。

我仍在学习正则表达式,正在花时间弄清楚这一点。 请帮忙

-谢谢

最佳答案

您需要在姓氏部分再添加一个嵌套组:

^(?!.{51})[a-zA-Z]+(?:\.[a-zA-Z]+(?:-[a-zA-Z]+)?)?$
                                 ^^^^^^^^^^^^^^^ 

参见 regex demo

详细信息:

  • ^ - 字符串的开始
  • (?!.{51}) - 字符串要求不超过 50 个字符
  • [a-zA-Z]+ - 1+ 个 ASCII 字母
  • (?:\.[a-zA-Z]+(?:-[a-zA-Z]+)?)? - 一个可选序列:
    • \. - 一个点
    • [a-zA-Z]+ - 1 个或多个 ASCII 字母
    • (?:-[a-zA-Z]+)? - 一个可选序列:
      • - - 连字符
      • [a-zA-Z]+ - 1+ 个 ASCII 字母
  • $ - 字符串结尾。

要声明此模式,请使用逐字字符串文字:

var pattern = @"^(?!.{51})[a-zA-Z]+(?:\.[a-zA-Z]+(?:-[a-zA-Z]+)?)?$";

要匹配任何 Unicode 字母,请使用 \p{L} 而不是 [a-zA-Z]

关于c# - 正则表达式 c# : Last Name in an email to include only one hyphen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40178469/

相关文章:

c# - HttpWebRequest 问题 : System lacked sufficient buffer space or because a queue was full

javascript - 为什么这个正则表达式模式没有传入 exec 方法?

c# - 正则表达式读取 HTML 中的标签

python - 在 Python 中选择不包括扩展名的路径的基本名称部分的最佳方法是什么?

regex - 匹配值的正则表达式,可以选择括在括号中

Java 正则表达式或 XML 解析器?

c# - 使用 Blob 存储索引器的 Azure 搜索元数据中的 base64 路径无效

c# - 在 ASP.NET 核心中使用时,如何从另一个项目访问 EF 核心的 DbContext?

c# - 如何让我的 C# 程序进入休眠模式?

c# - 我可以从后面的 C# 代码更新 WPF 绑定(bind)的值吗?