2010-08-18 14 views
7

Mam ciąg znaków, który może zawierać hashtagi na Twitterze. Chciałbym go usunąć z sznurka. Jak mam to zrobić? Próbuję użyć klasy RegExp, ale to nie działa. Co ja robię źle?Hasełka ze stringami za pomocą JavaScriptu

To jest mój kod:

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

proszę podać przykład danych wejściowych – Topera

Odpowiedz

10

Tu ya go:

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

używa atrybutu „g”, co oznacza „Znajdź wszystkie mecze”, zamiast zatrzymać się na pierwszym wystąpieniu.

+0

Myślę, że \ b musi tam być, w przeciwnym razie adresy URL takie jak "http://twitter.com/#search=" zostaną niepoprawnie pobrane jako znaczniki haszujące – Tom

1

to jest?

<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

To powinna być zaakceptowana odpowiedź. Jedyne z tych regexów, które działają zgodnie z opisem. Kciuki w górę. : D – azariah

6

Można napisać:

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

ja nie widzę reson dla pierwszego \w. Znak + jest używany do jednego lub więcej wystąpień. (Czy interesują Cię tylko hashtagi z dwoma znakami?)

g umożliwia dopasowanie "globalne". Używając metody replace(), określ ten modyfikator, aby zastąpić wszystkie dopasowania, a nie tylko pierwszy.

Źródło: http://www.regular-expressions.info/javascript.html

nadzieję, że to pomaga.

Powiązane problemy