我有一个类似于以下的字符串,并希望使用句点字符作为分隔符将名称拆分为一个数组。不幸的是,某些名称还包含句点字符,这会导致错误的拆分。我无法修改用于分隔名称的字符。
"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代码段中无效?
答案 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)|:/))