Я имею в распоряжении все для создания кратких заголовков из заголовков, но существует одна проблема. Мой RegEx заменяет пробелы дефисами. Но когда пользователь вводит "Привет там" (несколько пробелов), краткий заголовок заканчивается как "Привет-----там". Когда действительно это должно быть "Привет там".
Я должен создать регулярное выражение так, чтобы оно только заменило пространство, когда существует символ любая сторона?
Или есть ли более легкий способ сделать это?
Просто сопоставьте несколько пробельных символов.
s/\s+/-/g
Проще всего сложить повторяющиеся -
в один -
в качестве последнего шага:
replace /-{2,}/ by "-"
Или, если вы хотите, чтобы это воздействовать на пространства, вместо этого складывать пространства (очевидно, перед другими шагами)
Возможно, вы захотите сначала обрезать строку, чтобы избежать ведущих и последующих дефисов.
function hyphenSpace(s){
s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,'');
return s.split(/\s+/).join('-');
}
Я бы заменил [\ s] +
на '-'
и , затем заменил [^ \ w -]
с ''
Я использую это:
yourslug.replace(/\W+/g, '-')
Это заменяет все вхождения одного или нескольких не буквенно-цифровых символов одним тире.