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/