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]。
