Разбить строку по периоду, но не если пробел после периода

1

У меня есть строка, подобная следующей, и я хочу разделить имена в массив, используя символ точки в качестве разделителя. К сожалению, некоторые имена также содержат символ точки, который вызывает неправильное разделение. Я не могу изменить символ, используемый для разделения имен.

"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 ответ

4

Вы можете использовать этот шаблон регулярных выражений.

\.(?!\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)|:/))
  • 1
    Отлично работает, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню