разделить на новые строки и запятые и точки с запятой - PullRequest
4 голосов
/ 22 января 2012

Я хотел бы взять имена людей из текстовой области, введенные пользователем, и разделить их на элементы в массиве.

Взять теоретически возможный ввод:

people = "Abby Andrews, Ben \r\nCharlie Connors    Daphne D., Ernie E. Engels; Faye\r\n\r\nGary Gomez"

array = people.split('??')

Как можно построить регулярное выражение, чтобы успешно разбить сумасшедшую цепочку, подобную приведенной выше?

Должно быть разделено:

  • \r, \n, \r\n
  • запятая (,) или точка с запятой (;)
  • несколько пробелов

Не следует делить:

  • период (это может быть чей-то начальный)
  • один пробел (может разделять имена и фамилии)

Я пробовал people.split(/\r\n,;/), people.split(/,;\r\n/) и их комбинации, но ни один из них не дал результата.

1 Ответ

11 голосов
/ 22 января 2012

Попробуйте

array = people.split(
    /\s*[,;]\s* # comma or semicolon, optionally surrounded by whitespace
    |           # or
    \s{2,}      # two or more whitespace characters
    |           # or
    [\r\n]+     # any number of newline characters
    /x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...