2010-08-18 13 views
7

Ho una stringa che potrebbe contenere hashtag di Twitter. Mi piacerebbe spogliarlo dalla stringa. Come dovrei farlo? Sto cercando di utilizzare la classe RegExp ma non sembra funzionare. Che cosa sto facendo di sbagliato?Strisce di hashtag da stringa utilizzando JavaScript

Questo è il mio codice:

var regexp = new RegExp('\b#\w\w+'); 
postText = postText.replace(regexp, ''); 
+0

si prega di inserire un esempio di input – Topera

risposta

10

Qui ya go:

postText = 'this is a #test of #hashtags'; 
var regexp = new RegExp('#([^\\s]*)','g'); 
postText = postText.replace(regexp, 'REPLACED'); 

Questo utilizza l'attributo 'g' che significa 'trovare tutte le partite', invece di fermarsi alla prima occorrenza.

+0

Penso che il \ b debba essere presente, altrimenti URL come "http://twitter.com/#search=" verranno erroneamente prelevati come tag hash – Tom

1

questo?

<script> 
postText = "this is a #bla and a #bla plus#bla" 
var regexp = /\#\w\w+\s?/g 
postText = postText.replace(regexp, ''); 
alert(postText) 
</script> 
+1

Questa dovrebbe essere la risposta accettata. L'unica di queste regex è che funziona come descritto. Pollice su. : D – azariah

6

Si può scrivere:

// g denotes that ALL hashags will be replaced in postText  
postText = postText.replace(/\b\#\w+/g, ''); 

non vedo un reson per la prima \w. Il segno + viene utilizzato per uno o più occorrenze. (O sei interessato solo agli hashtag con due caratteri?)

g abilita la corrispondenza "globale". Quando si utilizza il metodo replace(), specificare questo modificatore per sostituire tutte le corrispondenze, anziché solo il primo.

Fonte

: http://www.regular-expressions.info/javascript.html

Speranza che aiuta.

Problemi correlati