正则表达式 - 防止双重空间

时间:2011-05-25 22:03:01

标签: c# regex

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

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

我不是正则表达式专家,我在Stackoverflow和RegexBuddy的帮助下得到了它。但有一条线我遇到了一些麻烦。第一个正向前瞻(?!(?:.*[ ]){2}),这可以防止出现多个空格。

这不是我想要的相当。我只想确保顺序多个空格。像双空间之类。这个正则表达式可以防止整个字符串中有超过1个空格。

我一直想弄清楚如何改变它,但我真的很难过。有没有办法用正则表达式的其余部分强制执行这样的概念?

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

1 个答案:

答案 0 :(得分:4)

(?!(?:.*[ ]){2})替换为(?!.*[ ]{2})

解释:

(?:.*[ ]){2}首先匹配一个前面有零个或多个其他字符((?:.*[ ]))的单个空格,然后重复两次({2})。

.*[ ]{2}匹配前面有零个或多个其他字符的两个连续空格。