2017-08-25 12 views
2

せずに、文字列からすべてのハッシュタグ:エキス、私はこのような文字列からハッシュタグを抽出しています。#

const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa'; 
const hashtags = mystring.match(/#\w+/g) || []; 
console.log(hashtags); 

が出力されます:

:マッチがあるように私の正規表現があるべき方法

['#arebaba', '#ole', '#cool', '#aaa'] 

['arebaba', 'ole', 'cool', 'aaa'] 

マップ機能を使用したくありません!コードを短縮することができる

+0

の可能な複製を[実行する方法JavaScriptで正規表現のすべての一致を取得しますか?](https://stackoverflow.com/質問/ 6323417/how-do-i-retrieve-all-matches-in-a-regular-expression-in-javascript) – choasia

+2

regexキャプチャグループについて読んでください。 http://www.regular-expressions.info/brackets.html –

答えて

4

const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa'; 
 
var regexp = /#(\w+)/g; 
 
var match = regexp.exec(mystring); 
 
while (match != null){ 
 
    console.log(match[1]) 
 
    match = regexp.exec(mystring) 
 
}

EDIT。しかし、あなたの問題を解決するのはあなたの正規表現ではありませんが、正しい方法を選んでください。

var mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa', 
 
    match; 
 
var regexp = /#(\w+)/g;  
 
while (match = regexp.exec(mystring)) 
 
    console.log(match[1]);

+0

これはトリックですが、私のユースケースにどのように適応するかはわかりません。あなたの例で私の2行のコードは7になりました。私は正規表現を変更する必要がありますが、何をすべきかはわかりません。 –

+0

万が一プロトタイプを使用していますか? –

2

あなたはすでに複数のサブストリングにマッチした、あなたは前に#が存在しているはずなので、それを削除します。

const mystring = 'huehue #arebaba,saas #ole #cool asdsad #aaa'; 
 
const hashtags = mystring.match(/#\w+/g).map(x => x.substr(1)) || []; 
 
console.log(hashtags);

+0

質問で指定されます:マップ機能を使用しません。 –

+0

@mlambrichsええ、これはOPのためではなく、それを使いたい人のためです。この回答はコミュニティのwikiの回答です。 '.map'を使わないという要求は"人工的 "で、実際の生活ではなく学校の割り当てのように聞こえます。 –

+0

私は現在地図を使っていますが、この手順をスキップして、#を使わずにハッシュタグを抽出します。 @IbnClaudius。 –

関連する問題