2016-05-26 9 views
5

@記号の後ろの文字を空白文字にしたい。文字列マッチングJavascript

たとえば、私の文字列がhello @world. some [email protected]のようなものなら。それから、私は文字「世界」と「スタックオーバーフロー」を得たいと思っています。

ここで私が試してきたことがあります。

var comment = 'hello @world. some [email protected]'; 
var indices = []; 
    for (var i = 0; i < comment.length; i++) { 
     if (comment[i] === "@") { 
      indices.push(i); 
      for (var j = 0; j <= i; j++){ 
       startIndex.push(comment[j]); 
      } 
     } 
    } 

私は、@とスペースの出現箇所を取得してから、私のコンテンツを取得するために、その部分をトリミングが、私はREGEXなしで、このためのよりよい解決策/提案を希望することができます。前もって感謝します。

/@(\S+)/g 

とグラブキャプチャグループがループ内でexec方法を使用して:

+4

なぜ正規表現を使用しないソリューションが必要ですか?これはまさしく正規表現がしたことです。 –

+1

'str.split( '@')。splice(1).map(function(w){return w.split( '')[0];})' – haim770

+1

http://stackoverflow.com/questions/15265605/how-to-pull-mention-out-of-strings-like-twitter-in-javascript、https://www.npmjs.com/package/mentions-regex –

答えて

4

あなたは、この正規表現を使用することができます。

この正規表現は、@と一致し、\S+は、キャプチャされたグループにグループ化されている1つ以上の空白以外の文字と一致します。

コード:

var re = /@(\S+)/g; 
 
var str = 'hello @world. some [email protected]'; 
 
var m; 
 
var matches=[]; 
 

 
while ((m = re.exec(str)) !== null) { 
 
    matches.push(m[1]); 
 
} 
 

 
document.writeln("<pre>" + matches + "</pre>");

PS:あなたはword後DOTをキャプチャしたくない場合は

/@([^.\s]+)/g 

を使用する必要があります注意してください。

+1

ありがとう!完璧にうまくいった。また、正規表現を学習するための例をたくさんお勧めしたい場合は、任意の良い参照?前もって感謝します! –

+1

私はこれを読むことをお勧めします:http://www.regular-expressions.info/ – anubhava

関連する問題