Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为Windows窗体生成正则表达式_C#_Regex_Winforms - Fatal编程技术网

C# 如何为Windows窗体生成正则表达式

C# 如何为Windows窗体生成正则表达式,c#,regex,winforms,C#,Regex,Winforms,制作Windows窗体并需要验证用户名 它的长度至少为4个字符,最多为15个字符。它还将允许连字符和下划线以及中间的点,但不是在开始时,也不在用户名的末尾。一行中只能有一个连字符、一个下划线和一个点。它不应该占用空格 不允许的用户名示例: 嗯,你可以为此制作一个正则表达式。从简单的要求开始: /^[^\s._-]\S{2,13}[^\s._-]$/ 这意味着“字符串应以任何非空白符号、点、连字符或下划线的字符开头,后跟不少于2个但不超过13个非空白字符,后跟任何非空白符号、点、连字符或下划线的

制作Windows窗体并需要验证用户名 它的长度至少为4个字符,最多为15个字符。它还将允许连字符和下划线以及中间的点,但不是在开始时,也不在用户名的末尾。一行中只能有一个连字符、一个下划线和一个点。它不应该占用空格 不允许的用户名示例:


嗯,你可以为此制作一个正则表达式。从简单的要求开始:

/^[^\s._-]\S{2,13}[^\s._-]$/
这意味着“字符串应以任何非空白符号、点、连字符或下划线的字符开头,后跟不少于2个但不超过13个非空白字符,后跟任何非空白符号、点、连字符或下划线的字符”

要使用其他要求来装饰它,请使用lookaheads:

/^(?=[^-]*-?[^-]*$)(?=[^.][.]?[^.]*$)(?=[^_]*_?[^_]*$)[^\s._-]\S{2,13}[^\s._-]$/
我想,模式是非常清楚的:对于每个只应遇到一次的符号,使用一个前瞻性语句,该语句表示“匹配任何数量的非选中符号,然后匹配已选中符号(可选),然后再次匹配任何数量的非选中符号,然后是字符串的结尾”

(?=[^s]*s?[^s]*$)
最后一部分是检查字符串不应仅由数字组成:

(?!\d+$)

不过,我想知道,为什么要用一个正则表达式而不是一系列的测试来实现它,因为这些测试将更加灵活和可读。

您尝试了什么?顺便说一句,没有否决票……为什么一定是正则表达式?第一个测试是长度,我必须使用你的4个正则表达式来完成任务?
(?!\d+$)