C# 正则表达式 - 排除文本开头和结尾的下划线和空格

Posted

技术标签:

【中文标题】C# 正则表达式 - 排除文本开头和结尾的下划线和空格【英文标题】:C# Regular expression - exclude underscores & spaces at beginning and end of text 【发布时间】:2021-03-06 01:59:30 【问题描述】:

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

这是我目前所拥有的。

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

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

【问题讨论】:

【参考方案1】:

你可以使用

[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_-]+ - 除空格以外的一个或多个字符,_- $ - 字符串结束。

请参阅regex demo。

【讨论】:

感谢wiktor,这符合我的预期!非常感谢

以上是关于C# 正则表达式 - 排除文本开头和结尾的下划线和空格的主要内容,如果未能解决你的问题,请参考以下文章

C# 正则表达式

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

电子邮件的正则表达式用户名应以 [a-zA-Z0-9] 开头或结尾,但可能包含破折号、下划线

我需要一个正则表达式结果,不包括匹配模式的开头和结尾的子字符串

如何获取以 ^ 开头和结尾的单词

正则表达式