2010-08-18 17 views
7

Twitter hashtag'leri içeren bir dize var. Onu ipekten çıkarmak istiyorum. Bunu nasıl yapmalıyım? RegExp sınıfını kullanmaya çalışıyorum ama işe yaramıyor. Neyi yanlış yapıyorum?Dize kullanılarak gelen hata ayıklama jjeleri

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

Lütfen – Topera

cevap

10

ya gitmek:

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

Bu yerine ilk geçtiği uğramaya, 'TÜM eşleşmeleri bulmak' anlamına gelen 'g' özelliği kullanılıyor.

+0

Sanırım \ b'nin içinde olması gerekiyor, aksi halde 'http://twitter.com/#search=' gibi URL'ler yanlış etiket olarak alınıyor – Tom

1

Bu:

Bu benim kodudur?

<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

numaralı girişe bir örnek koyunuz. Bu kabul edilen cevap olmalıdır. Açıklandığı gibi çalışan bu regexlerden sadece biri. Başparmak havaya. : D – azariah

6

Sen yazabilirsiniz:

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

İlk \w için bir tınlama görmüyorum. + işareti, bir veya daha fazla olay için kullanılır. (Veya iki karakterle yalnızca hashtag'lerle ilgileniyor musunuz?)

g "global" eşleştirmeyi etkinleştirir. Replace() yöntemini kullanırken, yalnızca birinciden ziyade, tüm eşleşmeleri değiştirmek için bu değiştiriciyi belirtin.

Kaynak: o yardımcı olur http://www.regular-expressions.info/javascript.html

Umut. İşte