Regex mvc模型中如何限制尾随空格

Regex mvc模型中如何限制尾随空格,regex,asp.net-mvc,model,Regex,Asp.net Mvc,Model,我有一张登记表,上面有名字和姓氏作为样板房之一。我不希望用户在字符串的开头和结尾输入空格。我想使用Regex实现这一点。我尝试了以下代码,但这不允许用户在两个单词之间输入空白,我不想限制这一点 [RegularExpression(@"^[^\s]+$", ErrorMessage = "Required.")] 有效:“约翰·保罗” 无效:“约翰·保罗” 无效:“约翰·保罗” 提前感谢。要允许使用一两个单词,请使用 @"^\S+(?:\s+\S+)?$" @"^\S+(?:\s+\S+)*

我有一张登记表,上面有名字和姓氏作为样板房之一。我不希望用户在字符串的开头和结尾输入空格。我想使用Regex实现这一点。我尝试了以下代码,但这不允许用户在两个单词之间输入空白,我不想限制这一点

[RegularExpression(@"^[^\s]+$", ErrorMessage = "Required.")]
有效:
“约翰·保罗”

无效:
“约翰·保罗”

无效:
“约翰·保罗”


提前感谢。

要允许使用一两个单词,请使用

@"^\S+(?:\s+\S+)?$"
@"^\S+(?:\s+\S+)*$"
其中,
(?:\s+\s+)
在1+空格符号(
\s+
)之后匹配可选的1+非空格符号序列(
\s+

要允许使用一个或多个“单词”,请使用

注意:要在单词之间只允许1个空格,请将
\s+
替换为
\s

注2:如果只允许使用常规空格(即不允许使用制表符等),请将
\s
替换为空格

详细信息

  • ^
    -字符串的开头
  • \S+
    -1个或多个非空白字符
  • (?:\s+\s+*
    -与0+匹配的非捕获组(由于
    *
    量词)序列:
    • \s+
      -1+(由于使用了
      +
      量词,如果需要只允许单词之间使用单个空格,请将其删除)空格
    • \S+
      -1个或多个非空白字符
  • $
    -字符串结束

@“^\S+\S+\S+$”这一个无论如何都需要两个词,这不是我的情况。@“^\S+(?:\S+\S+*$”这对我很有效。谢谢:)@AkshayChawla:啊,我忘了选第二个。但是,要匹配1个或多个(没有最大阈值),请使用第二个正则表达式,是的。我试图找到一篇我可以理解所有正则表达式的文章,但找不到。那么,你能分享一些我可以提高正则表达式技能的文章吗有很多。如果您计划使用.NETRegex,您当然应该阅读。但是,要掌握基本知识,请在进行练习时参考。