我有一个名称字段的大型正则表达式,如下所示。
^(?:(?!(?:.*[ ]){2})(?!(?:.*[']){2})(?!(?:.*[-]){2})(?:[a-zA-Z0-9 \p{L}'-]{3,48}$))$
我不是正则表达式专家,我是通过 Stackoverflow 和 RegexBuddy 的帮助才走到这一步的。但有一条线我遇到了一些麻烦。第一个正向前瞻,
(?!(?:.*[ ]){2})
,这可以防止出现多个空格。
这不是我想要的。我只是想确保不能有顺序有多个空格。比如双空格之类的。此正则表达式可防止整个字符串中出现超过 1 个空格。 我一直在试图找出如何改变这一点,但我真的很困惑。有没有办法用正则表达式的其余部分来强制执行这样的概念?
C# 是执行此操作的地方。
(?!(?:.*[ ]){2})
替换为
(?!.*[ ]{2})
解释:
(?:.*[ ]){2}
首先匹配前面有零个或多个其他字符的单个空格 (
(?:.*[ ])
),然后重复两次 ({2}
)。.*[ ]{2}
匹配前面有零个或多个其他字符的两个连续空格。
^(?!.*[\s][\s].*).+$