2010-08-18 20 views
7

Tengo una cadena que puede contener hashtags de Twitter. Me gustaría quitarlo de la cadena. ¿Cómo debería hacer esto? Intento utilizar la clase RegExp, pero parece que no funciona. ¿Qué estoy haciendo mal?Strip hashtags from string using JavaScript

Este es mi código:

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

por favor ponga un ejemplo de entrada – Topera

Respuesta

10

Aquí ya go:

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

Este utiliza el atributo 'g', que significa 'Buscar todos los partidos', en lugar de detenerse en la primera aparición.

+0

Creo que la \ b debe estar ahí, de lo contrario las URL como 'http://twitter.com/#search=' se recogerán incorrectamente como etiquetas hash – Tom

1

Este?

<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

Esta debería ser la respuesta aceptada. El único de estos regex que realmente funciona como se describe. Pulgares hacia arriba. : D – azariah

6

Se puede escribir:

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

no veo un reson por primera \w. El signo + se usa para una o más ocurrencias. (¿O solo le interesan los hashtags con dos caracteres?)

g habilita la coincidencia "global". Al usar el método replace(), especifique este modificador para reemplazar todas las coincidencias, en lugar de solo la primera.

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

espero que ayude.

Cuestiones relacionadas