按句号分割字符串,但如果句号后面是空格,则不分割。

3
我有一个字符串,想要使用句点作为分隔符将名称拆分为数组。不幸的是,一些名称中也包含句点,这会导致错误的拆分。我不能修改用于分隔名称的字符。
"John Smith.John Mc. Smith.Jim Smith"

期望的输出

 ["John Smith","John Mc. Smith","Jim Smith"]

以下正则表达式在编辑器中运行良好https://regex101.com/r/oK6iB8/32,但在Chrome控制台中无法运行。
"John Smith.John Mc. Smith.Jim Smith".split('\.(?=\S)|:')

https://codepen.io/anon/pen/NogQrQ?editors=1111

输出不正确

["John Smith.John Mc. Smith.Jim Smith"]

为什么在正则表达式编辑器中可以运行,但在Codepen代码片段中却不行?
1个回答

7

您可以使用此正则表达式模式。

\.(?!\s) - . 不应该后跟空格(负向先行断言)

let str ="John Smith.John Mc. Smith.Jim Smith"

let op = str.split(/\.(?!\s)/g)

console.log(op)

为什么我的代码没有起作用

split('\.(?=\S)|:') 这里你将 \.(?=\S)|: 作为一个字符串而不是正则表达式。

console.log("John Smith.John Mc. Smith.Jim Smith".split(/\.(?=\S)|:/))


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