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

时间:2017-05-12 11:20:41

标签: regex asp.net-mvc model

我有一个注册表单,其名字和姓氏是模型属性之一。我不希望用户在字符串的开头和结尾输入空格。我想用Regex实现这一目标。我尝试使用代码,但这并不允许用户在两​​个单词之间输入空格,我不想限制。

[RegularExpression(@"^[^\s]+$", ErrorMessage = "Required.")]

有效:"John Paul"

无效:" John Paul"

无效:"John Paul "

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

@"^\S+(?:\s+\S+)?$"

其中(?:\s+\S+)?在1 +空白符号(\S+)之后匹配可选 1+非空白符号序列(\s+)。

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

@"^\S+(?:\s+\S+)*$"

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

NOTE2 :如果您只想允许常规空格(即没有标签等),请用空格替换\s

<强>详情:

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