Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# Regex-至少一个字母数字字符并允许空格_C#_Regex - Fatal编程技术网

C# Regex-至少一个字母数字字符并允许空格

C# Regex-至少一个字母数字字符并允许空格,c#,regex,C#,Regex,我想确保名字字段至少有一个字母数字字符,并且允许空格和破折号 **VALID** David Billie Joe Han-So **INVALID** - Empty is also invalid 使用此模式 ^(?=.*[a-zA-Z])[a-zA-Z -]+$ 哦,用于字母数字 ^(?=.*[a-zA-Z0-9])[a-zA-Z 0-9-]+$ 要确保破折号和空格出现在合法的位置,请使用以下命令: (?i)^[a-z]+(?:[ -]?[a-z]+)*$ 看 (?

我想确保名字字段至少有一个字母数字字符,并且允许空格和破折号

**VALID**

David
Billie Joe
Han-So

**INVALID**
-

Empty is also invalid
使用此模式

^(?=.*[a-zA-Z])[a-zA-Z -]+$  

哦,用于字母数字

^(?=.*[a-zA-Z0-9])[a-zA-Z 0-9-]+$ 

要确保破折号和空格出现在合法的位置,请使用以下命令:

(?i)^[a-z]+(?:[ -]?[a-z]+)*$

  • (?i)
    使我们处于不区分大小写的模式
  • ^
    确保我们位于字符串的开头
  • [a-z]+
    匹配一个或多个字母
  • [-]?[a-z]+
    匹配可选的单个空格或破折号,后跟字母
  • (?:[-]?[a-z]+)*
    允许零次或多次
  • $
    断言我们已到达字符串的末尾
您提到了字母数字,因此如果您还想允许数字:

(?i)^[a-z0-9]+(?:[ -]?[a-z0-9]+)*$

^[\-a-zA-Z0-9]*[a-zA-Z0-9][\-a-zA-Z0-9]*$
?不要用正则表达式验证名称。@hwnd应该给出原因和替代方案。这与
Hans----
匹配,不值得为此争论,但。。。以下是。仅供参考添加说明。:)请将您的模式修改为
(?i)^[a-z0-9]+(?:[-][a-z0-9]+)*[a-z0-9]?$
以匹配至少“一个”字母数字“:-@alphabravo由于字母是字母数字,因此该模式已匹配至少一个字母数字字符。我没有在字符类中包含数字,因为我假设Adam的意思是按字母顺序排列的,正如他的示例所示。。。但你是对的,也许他也想包括数字,所以我添加了第二个正则表达式作为选项。感谢您指出这种可能性。:)别开玩笑了,你错过了我的观点,你需要添加最后一个
来匹配至少一个@我想我终于明白你的意思了。你的意思是正则表达式匹配的字符串长度超过2个字符,但不是单字母字符串?我已经修改了这个表达方式,尽管不完全符合你的建议。接得好,谢谢。:)