正则表达式 - 防止双空格

问题描述 投票:0回答:2

我有一个名称字段的大型正则表达式,如下所示。

^(?:(?!(?:.*[ ]){2})(?!(?:.*[']){2})(?!(?:.*[-]){2})(?:[a-zA-Z0-9 \p{L}'-]{3,48}$))$

我不是正则表达式专家,我是通过 Stackoverflow 和 RegexBuddy 的帮助才走到这一步的。但有一条线我遇到了一些麻烦。第一个正向前瞻,

(?!(?:.*[ ]){2})
,这可以防止出现多个空格。

这不是我想要的。我只是想确保不能有顺序有多个空格。比如双空格之类的。此正则表达式可防止整个字符串中出现超过 1 个空格。 我一直在试图找出如何改变这一点,但我真的很困惑。有没有办法用正则表达式的其余部分来强制执行这样的概念?

C# 是执行此操作的地方。

c# regex
2个回答
5
投票
(?!(?:.*[ ]){2})

替换为

(?!.*[ ]{2})

解释:

(?:.*[ ]){2}

首先匹配前面有零个或多个其他字符的单个空格 (

(?:.*[ ])
),然后重复两次 (
{2}
)。

.*[ ]{2}

匹配前面有零个或多个其他字符的两个连续空格。

    


0
投票

^(?!.*[\s][\s].*).+$

© www.soinside.com 2019 - 2024. All rights reserved.