2010-06-07 21 views
5

Ho tutto a posto per creare lumache dai titoli, ma c'è un problema. Il mio RegEx sostituisce gli spazi con trattini. Ma quando un utente digita "Ciao     lì" (più spazi) lo slug finisce come "Ciao ----- lì". Quando davvero dovrebbe essere "Ciao-là".Creazione di lumache dai titoli?

Devo creare un'espressione regolare in modo che sostituisca uno spazio solo quando è presente un carattere su entrambi i lati?

O c'è un modo più semplice per farlo?

+0

Il problema è che i titoli vengono creati al volo, usando Javascript, per mostrare all'utente quale sarà il suo URL. È per un social network. –

+1

JavaScript è un linguaggio di programmazione e può eseguire regex. Qual è il problema? –

risposta

2

potrebbe essere il più facile da piegare ripetuti - s in uno - come ultimo passo:

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

O se desideri solo questo per influenzare gli spazi, piegare spazi invece (prima che gli altri passi, ovviamente)

+0

+1: Quello, o piega gli spazi come primo passo. –

5

Basta abbinare più caratteri di spaziatura.

s/\s+/-/g 
0

io sostituirei [\s]+ con '-' e poi sostituire [^\w-] con ''

+0

Questo ha funzionato perfettamente !! –

+0

È possibile aggiungere un ulteriore '[\ -] +' => ''-'' proprio alla fine per sostituire la soluzione grande di più – Oli

6

Io uso questo:

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

Questo sostituisce tutte le occorrenze di una o più non alfanumerici personaggi con un trattino singolo

0

Si consiglia di tagliare prima la stringa, per evitare i trattini iniziali e finali.

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