【发布时间】:2020-09-01 23:54:22
【问题描述】:
我从最近删除的一个问题中复制了这个问题,我认为这个问题很有趣,但很难回答。
tl;博士:
如何匹配前面至少有 6 个字符且不包含任何匹配空格的空格?
我正在尝试编写这个正则表达式来匹配它们之间有 6 个或更多字符/不匹配空格的空格,以便我可以使用 .split() 将它们分成不同的行。
示例:
- 凯亚·迪瓦恩·拉赫曼
- 祖奈拉球场凯恩斯
- 奥利维亚·拉莫斯·史密斯
- 唐纳德·本·埃德·贾克斯
我目前拥有的:/(?<=.{6,})\s/g
这不能正常工作。例如,它匹配姓氏中的所有空格(拆分结果:['Donald', 'Ben', 'Ed', 'Jax'])。相反,我希望拆分结果为['Donald', 'Ben Ed', 'Jax']。你如何使它在第一个匹配之后(唐纳德之后的空格)开始从那个索引开始搜索?
【问题讨论】:
-
Lookbehind 是一种非消耗模式,因此您不能在此处使用它。
\K不受支持,因此您需要一个匹配的正则表达式,而不是拆分正则表达式。请提供模式要求。 -
从你说的这个也不应该被选中:
Kayiya~here~Devine Rehman? -
您将
Kaiya(5 个字符)拼错为Kayiya(6 个字符)。在您的示例中,应该匹配第一个空格,是的。因为它前面至少有 6 个不包含匹配空格的字符。 -
在
'Zunairah Field Cairns'中,考虑到'Field'是五个字符,而'Field'之前的空格匹配,为什么'Field'之后的空格匹配?对于'Oliwia Ramos Smith'中'Ramos'之后的空格,同样的问题。 -
我没有注意到那些也是不正确的匹配。但是当前的最佳答案可以正确处理它们(与它们不匹配)。
标签: javascript regex