我有一个用于姓名字段的大型正则表达式,看起来像这样。
^(?:(?!(?:.*[ ]){2})(?!(?:.*[']){2})(?!(?:.*[-]){2})(?:[a-zA-Z0-9 \p{L}'-]{3,48}$))$
我不是正则表达式专家,通过Stackoverflow和RegexBuddy的帮助才能做到这一步。但是有一行让我有些困惑,就是第一个正向先行断言(?!(?:.*[ ]){2})
,它防止出现多个空格。
这并不完全符合我的需求。我只想确保不能出现连续的多个空格,如双倍空格等。这个正则表达式防止整个字符串中出现超过1个空格。
我一直在尝试弄清楚如何更改它,但我真的感到困惑。是否有任何方法来在正则表达式的其余部分中实现这样的概念呢?
这将在C#中执行。
(?:
是告诉它限制特定表达式可以被评估的次数,但将其全部放在(?!
中会将其更改为匹配整个字符串中的序列,而不仅仅是检查一些空格的数量。非常感谢!当 SO 的时间限制允许时,我会点击接受。 - Ciel(?: ... )
让你感到困惑了。看一下这个页面,了解一下( ... )
和(?: ... )
之间的区别。不用谢! - Bart Kiers