首页 > 解决方案 > C# 正则表达式 - 排除文本开头和结尾的下划线和空格

问题描述

我一直在努力让这个正则表达式起作用。我希望表达式在字符串的开头或结尾包含空格时显示错误(允许中间有空格)。另外我想排除下划线和连字符。

这就是我到目前为止所拥有的。

[RegularExpression(@"^.*\s*[-_]", ErrorMessage = "string cannot begin with or end with a space, or contain a hyphen or underscore")]

这没有按预期工作,有人知道我缺少什么才能让它工作吗?

标签: c#regexasp.net-mvc

解决方案


您可以使用

[RegularExpression(@"^[^\s_-]+(?:\s+[^\s_-]+)*$", ErrorMessage = "string cannot begin with or end with a space, or contain a hyphen or underscore")]

细节

  • ^- 字符串的开始
  • [^\s_-]+- 除空格外的一个或多个字符,_以及-
  • (?:\s+[^\s_-]+)*- 零次或多次重复:
    • \s+- 一个或多个空格
    • [^\s_-]+- 除空格外的一个或多个字符,_以及-
  • $- 字符串结束。

请参阅正则表达式演示


推荐阅读