JavaScript分隔符回溯匹配

4

我需要按\.\s分割一个字符串,但是将.保留在分割后的数组元素中。

以这个字符串为例:Lorem Ipusm. Excepteur sint occaecat. 我需要输出如下的数组:

[0] => Lorem Ipsum.
[1] => Excepteur sint occaecat.

看到点号.仍然保持不变了吗?

我认为我需要一个lookbehind正则表达式,因为/\.(?=\s)*/不起作用,相反,.在它后面的每个句子的开头结束。


你在寻找这个吗?https://dev59.com/B2855IYBdhLWcg3wJQvT - AlessandroEmm
是的,我试过了,但是出现了无效的捕获组,或者什么的? - James
@TillHelge,JavaScript不支持Lookbehind断言。 - stema
@stema 是的...我刚刚在 jsfiddle 上玩了一下,意识到这一点。以前从来没有需要过。谢谢你证实我的怀疑。;) - Till Helge
1个回答

4
尝试这个:
var s = "Lorem Ipsum. Excepteur sint occaecat.",
    parts = s.match(/(.+?\.(?:\s|$))/g); 
    // ["Lorem Ipsum. ", "Excepteur sint occaecat."]

请注意数组中第一个结果的末尾空格 - 但是很容易解决。 - nhahtdh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接