我有一个注册表单,其名字和姓氏是模型属性之一。我不希望用户在字符串的开头和结尾输入空格。我想用Regex实现这一目标。我尝试使用代码,但这并不允许用户在两个单词之间输入空格,我不想限制。
[RegularExpression(@"^[^\s]+$", ErrorMessage = "Required.")]
有效:"John Paul"
无效:" John Paul"
无效:"John Paul "
提前致谢。
答案 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+
- 一个或多个非空白字符$
- 字符串结束。