2010-06-07 48 views
5

Tengo todo en su lugar para crear babosas de títulos, pero hay un problema. Mi RegEx reemplaza espacios con guiones. Pero cuando un usuario escribe "Hola     allí" (espacios múltiples) la babosa termina como "Hola ----- allí". Cuando en realidad debería ser "Hola".Creando babosas de títulos?

Debería crear la expresión regular de modo que sólo sustituye un espacio cuando hay un carácter cada lado?

O hay una manera más fácil de hacer esto?

+0

El problema es que los títulos se crean sobre la marcha, usando Javascript, para mostrar al usuario cómo se verá su URL. Es para una red social. –

+1

JavaScript es un lenguaje de programación, y puede hacer regex. ¿Cuál es el problema? –

Respuesta

2

que podría ser el más fácil de doblar repetidas - s en una - como el último paso:

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

o si sólo desea que esto afecta a los espacios, doblar espacios en lugar (antes de los otros pasos, obviamente)

+0

+1: Eso, o doblar espacios como el primer paso. –

5

Simplemente haga coincidir varios caracteres en blanco.

s/\s+/-/g 
0

Me reemplazar [\s]+ con '-' y continuación reemplazar [^\w-] con ''

+0

Esto funcionó perfectamente !! –

+0

Puede agregar un '(\) +' => ''-'' adicional al final para reemplazar varios -s – Oli

6

utilizo este:

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

Esto reemplaza todas las ocurrencias de uno o más no alfanuméricos caracteres con una solo dash.

0

Es posible que desee recortar primero la cadena, para evitar guiones y guiones posteriores.

function hyphenSpace(s){ 
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,''); 
    return s.split(/\s+/).join('-'); 
} 
Cuestiones relacionadas