У меня есть строка, подобная следующей, и я хочу разделить имена в массив, используя символ точки в качестве разделителя. К сожалению, некоторые имена также содержат символ точки, который вызывает неправильное разделение. Я не могу изменить символ, используемый для разделения имен.
"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?
Вы можете использовать этот шаблон регулярных выражений.
\.(?!\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)|:/))