C# 正则表达式允许空格但不允许在开头、结尾和重复的空格

C# regex expression for allowing spaces but not at the beginning, end and repeated spaces

我有一个 UI 字段的正则表达式验证:

^[a-z|A-Z|0-9|_|\-]+$

现在我需要允许 spaces 作为条目,所以如果我将 space 添加到正则表达式,如下所示:

^[a-z|A-Z|0-9|_| |\-]+$

它确实允许 space 开始、结束和重复 space 秒。

有人可以帮我解决这个问题吗?

我建议您从字符 class 中删除 | 符号,并且还包括 \s 而不是白色 space。

@"^[a-zA-Z0-9_-]+(?:\s[a-zA-Z0-9_-]+)*$"

但是 \s 也匹配换行符。因此,根据您的需要,将上述正则表达式中的 \s 更改为白色 space。这里最主要的是匹配的非捕获组(?:\s[a-zA-Z0-9_-]+)*

  • a space \s 以及以下一个或多个单词或连字符字符 [a-zA-Z0-9_-]+,零次或多次 (?:\s[a-zA-Z0-9_-]+)*.

DEMO