Рефакторинг 2 регулярные выражения в JavaScript в 1 сообщении


У меня есть следующий код, который заменяет "" <-- пространства с "-" <-- тире.
Потому что некоторые названия текст будет возвращен с несколькими пробелами, он преобразует его в 3 тире.

Примеры возможных названий:

  • "Здравствуй, Мир С JQuery" <--- Примечание 2 пробела между словами, а не 1
  • "Главный заголовок - подзаголовок или описание здесь"

Я бы выше звания превращаются в:

  • "Привет-Мир-От-Помощью JQuery" <---- (Не "Привет--Мир--От--На JQuery")
  • "Главное-заголовок-подзаголовок-или-описание-здесь" <--- (Не "главное-заголовок-подзаголовок-или-опис...")

Вот что я получил до сих пор, но не идеальный, как вы можете видеть. Пример:

var dirty_url = ui.item.label;
var url = dirty_url.replace(/\s+/g,"-");
var url = url.replace(/---/g,"-");

Поэтому в основном, я хочу, чтобы преобразовать все пробелы и недопустимые символы (ее URL-адрес) в " -", который будет использоваться в URL-адресе. Я хочу только максимум 1 тире между персонажей.



223
1
задан 8 сентября 2011 в 11:09 Источник Поделиться
Комментарии
2 ответа

Не стоит эта работа:

var dirty_url = ui.item.label;
var url = dirty_url.replace(/[-\s]+/g,'-')

Или, для более тщательной:

var url = dirty_url.replace(/[-\s@#$%^&*]+/g,'-') // etc...

Хотя на данный момент, Вы можете просто хочу, чтобы удалить все номера символов слова:

var url = dirty_url.replace(/\W+/g,'-')

3
ответ дан 8 сентября 2011 в 01:09 Источник Поделиться

Достаточно прост - регулярные выражения есть "чередование" оператор, который работает как "или".

var dirty_url = ui.item.label;
var url = dirty_url.replace(/(\s+|-{2,})/g,"-");

1
ответ дан 8 сентября 2011 в 11:09 Источник Поделиться