按句点拆分字符串,但如果句点之后为空格

时间:2019-02-04 17:06:06

标签: javascript regex

我有一个类似于以下的字符串,并希望使用句点字符作为分隔符将名称拆分为一个数组。不幸的是,某些名称还包含句点字符,这会导致错误的拆分。我无法修改用于分隔名称的字符。

"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"]

为什么这在Regex编辑器中有效,但在Codepen代码段中无效?

1 个答案:

答案 0 :(得分:7)

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

\.(?!\s)-.之后不应加上space(负前瞻)

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

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

console.log(op)

  

为什么我的代码不起作用

split('\.(?=\S)|:'),因为在这里您将\.(?=\S)|:作为string而不是正则表达式。

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