Создание слизней из названий? - PullRequest
6 голосов
/ 08 июня 2010

У меня есть все для создания слагов из заголовков, но есть одна проблема. Мой RegEx заменяет пробелы дефисами. Но когда пользователь вводит «Привет!» (Несколько пробелов), слаг заканчивается как «Привет ----- там». Когда действительно это должно быть "Привет-там".

Должен ли я создать регулярное выражение, чтобы оно заменяло пробел только в том случае, если с обеих сторон есть символ?

Или есть более простой способ сделать это?

Ответы [ 6 ]

7 голосов
/ 08 июня 2010

Я использую это:

yourslug.replace(/\W+/g, '-')

Это заменяет все вхождения одного или нескольких не алфавитно-цифровых символов одной чертой.

5 голосов
/ 08 июня 2010

Просто сопоставьте несколько пробельных символов.

s/\s+/-/g
2 голосов
/ 03 июля 2012

Даниил ответ правильный.

Однако, если кто-то ищет полное решение, мне нравится эта функция,

http://dense13.com/blog/2009/05/03/converting-string-to-slug-javascript/

Благодаря "плотность13"!

2 голосов
/ 08 июня 2010

Может быть проще всего сложить повторенные - с в * - как последний шаг:

replace /-{2,}/ by "-"

Или, если вы хотите, чтобы это влияло только на пробелы, вместо этого сложите пробелы (очевидно, перед другими шагами)

0 голосов
/ 08 июня 2010

Вы можете сначала обрезать строку, чтобы избежать начальных и конечных дефисов.

function hyphenSpace(s){
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,'');
    return s.split(/\s+/).join('-');
}
0 голосов
/ 08 июня 2010

Я бы заменил [\s]+ на '-' и , затем заменил [^\w-] на ''

...