Как разбить строку с разными знаками и пробелами с помощью регулярных выражений? - PullRequest
2 голосов
/ 22 февраля 2012

Я пытаюсь разбить эту строку:

bar .foo car.coo

на этот массив:

['bar',' .foo','car','.coo']

Я пробовал варианты этой фразы, но я просто не могу получитьэто правильно:

str.replace(/([.#:])/g, '$1').split(" ");

Правила для разделения - если есть [.#:] затем разделить - но если перед ними есть пробел (например, .foo), тогда включает пробел.

Как мне это сделать?

Ответы [ 2 ]

6 голосов
/ 22 февраля 2012

Поскольку "car.coo" нужно разбить на два элемента массива без использования какого-либо символа, .split, вероятно, не то, что вам нужно.

Вы можете использовать str.match, который сформирует массив со строкой, проанализированной с помощью регулярного выражения:

"bar .foo car.coo".match(/( [.#:]|[.#:])?[^.#: ]+/g);
// ["bar", " .foo", "car", ".coo"]
1 голос
/ 22 февраля 2012

"bar .foo car.coo".match(/ ?.?\w+/g) вернется ["bar", " .foo", " car", ".coo"]

...