Javascript Regex не может соответствовать многоточию

Текущий REGEX, который я использую, следующий:

var sentences = fulltext.match(/[^\.!\?]+[\.!\?]+/g);

Это возвращает массив с предложениями, разделенными ВКЛЮЧАЯ пробелы (мне нужны все символы). Проблема в том, что он не работает с многоточием "..." и, я думаю, не работает с другими нетрадиционными формами пунктуации.

Как я могу исправить свой REGEX, чтобы он соответствовал этой и другим формам пунктуации?

Есть ли какое-нибудь руководство по использованию REGEX для noob?


person Belohlavek    schedule 25.01.2014    source источник
comment
Многоточие также имеет свой собственный символ / кодовую точку -- U+2026 или \u2026 -- которые отличаются от 3 последовательных . (U+002E).   -  person Jonathan Lonowski    schedule 26.01.2014
comment
возможный дубликат регулярного выражения Javascript для пунктуации (международного)?   -  person Jonathan Lonowski    schedule 26.01.2014


Ответы (2)


Юникод многоточия — \u2026.

Таким образом, вы можете использовать \u2026 для соответствия многоточию.

Код :

var fulltext= "First sentence… Second sentence. ";
fulltext.match(/([^.?!;\u2026]+[.?!;\u2026]+)/g);

ВЫВОД

["First sentence…", " Second sentence."]

ДЕМО и объяснение

person Sujith PS    schedule 26.01.2014
comment
Спасибо за демонстрацию + объяснение. - person Belohlavek; 27.01.2014

Вы можете просто добавить многоточие (и любые другие знаки препинания) в свои наборы символов.

var input = "First sentence… Second sentence. ";
input.match(/[^\.\?!;…]+[\.\?!;…]+/g);

Результат:

["First sentence…", " Second sentence."]
person zord    schedule 25.01.2014