2017-02-06 6 views
0

私は正規表現を使ってテキスト文字列からTwitterハンドラ名を抽出したいと思います。私は自分の出力に含めている ">"を除いて、私がほとんどそこにいると信じています。正規表現を変更するにはどうすればよいですか?出力から ">"を削除しますか?ここJavaScriptの正規表現を使って文字列からTwitterハンドラを抽出する

は、テキスト文字列の値の例である:

"<a href=\"https://twitter.com/PlaymakersZA\" target=\"_blank\">PlaymakersZA</a>, <a href=\"https://twitter.com/Absa\" target=\"_blank\">Absa</a>, <a href=\"https://twitter.com/DiepslootMTB\" target=\"_blank\">DiepslootMTB</a>" 

所望の出力は、以下からなる配列であろう:ここ

PlaymakersZA, Absa, DiepslootMTB 

は一例です私の正規表現:

var array = str.match(/>[a-z-_]+/ig) 

ありがとうございました!

+0

を除去でき、 DOMから 'textContent'を取得します。正規表現を使いたい場合は、捕捉グループ['/ /()a-[\-_]+)/ig'](https://jsfiddle.net/tusharj/jwLqektt/)を使って最初に捕捉したグループ値を抽出してください。 – Tushar

+1

または、 'str.match(/> [az -_] +/ig).map(function(x){return x.substr(1);})' –

+0

'.match最悪の場合... '(?!>)'と一致しないところ – WasteD

答えて

2

正規表現内のマッチグループを使用して、抽出する部分を指定することができます。

私はこれをデモするためにJSFiddleに設定しました。

基本的には、括弧内に抽出する正規表現の部分を囲みます。/>([a-z-_]+)/igをオブジェクトとして保存し、まだ値がある限り.exec()を実行します。結果の配列からインデックス1を使用すると、最初の一致グループの結果を見つけることができます。インデックス0は正規表現全体であり、次のインデックスは後で一致するグループ(使用可能な場合)です。

var str = "<a href=\"https://twitter.com/PlaymakersZA\" target=\"_blank\">PlaymakersZA</a>, <a href=\"https://twitter.com/Absa\" target=\"_blank\">Absa</a>, <a href=\"https://twitter.com/DiepslootMTB\" target=\"_blank\">DiepslootMTB</a>"; 

var regex = />([a-z-_]+)/ig 

var array = regex.exec(str); 
while (array != null) { 
    alert(array[1]); 
    array = regex.exec(str); 
} 
2

あなたはちょうど私が、言う `` document.querySelectorAll( '[のhref * = "twitter.comを"])を使用し、それぞれを反復したいすべてのHTML

var str = "<a href=\"https://twitter.com/PlaymakersZA\" target=\"_blank\">PlaymakersZA</a>, <a href=\"https://twitter.com/Absa\" target=\"_blank\">Absa</a>, <a href=\"https://twitter.com/DiepslootMTB\" target=\"_blank\">DiepslootMTB</a>"; 
$handlers = str.replace(/<[^>]*>|\s/g,'').split(","); 
関連する問題