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