2012-03-06 5 views
0

私は正規表現の解析をjavascriptで学ぼうとしています。私は「スパン」javascript html regex

<span class="item_color_title">Status:</span> 
<span class="item_color_success"> 
Alive 
</span> 

「アライブ」のテキストを読む必要が

は私が必要とするものです。どんな簡単な方法ですか?

これは私がしましたFirefoxの拡張機能のためのものです:

var req = new XMLHttpRequest(); 
req.open('GET', 'http://www.example.com/', false); 
req.send(null); 
if(req.status == 200) 
    standard_status.label = req.responseText; 

そして、standard_statusは "アライブ"

感謝を言う必要があります!

+5

hgeを解析するためにregexを使用しないでください:) – dotoree

+0

Ups、私はそれを知らなかった。 ;) – Jaxedin

答えて

1

さて、あなたは本当にあなたがこれを使用することができます正規表現を使用する場合:

var text = req.responseText.replace('\n', '') 
    , status = text.match(/<span class="item_color_success">(.*)<\/span>/)[1] 

standard_status.label = status 

あなたはJSが正常に.*で改行に一致していないとして改行を交換する必要があります/.*/mとの組み合わせ。

希望に役立ちます。

+0

jqueryが高速で「クリーナー」の場合はそれを使用します。あなたの答えをありがとう、私はそれを保つよ。 – Jaxedin

+1

それは間違いなく速くはなく、はるかにクリーナーです。すでにjqueryを既に使用している場合(私はFirefoxの拡張機能についての手掛かりはありません)、それを使用するのは問題ありません。 – sdepold

+0

受け入れられました。ありがとう! – Jaxedin

2

正規表現? jQueryのは、それは些細ます:

alert($('span.item_color_success').html()); 
+0

standard_status.label = ??あなたのコードをどのように使用するのか分かりません。私はひどく新しいjavascriptです。 – Jaxedin

+0

'standard_status.label = $( 'div.item_color_success').html()'。しかし、あなたは '.html()'の代わりに '.text()'を使うべきでしょう – sdepold

+0

Oks、しかし "req"はどこで使うのですか? Jsは$がreqであることを知っていますか?...編集:standard_status.label = req.responseText; OKですが、HTML全体が表示されます。 – Jaxedin

2

は、HTMLフラグメントに応答を解析します。

> html = $('<div/>').html(req.responseText) 
> $('.item_color_success', html).text() 
"Alive" 
+0

これは、OPが探しているものです、sweaver2112は正しいアイデアを持っていましたが、 'responseText'がHTMLであり、DOMに接続されていないことを認識しませんでした –

0

を使用すると、余分なjQueryの依存関係を追加するWATない場合、これは純粋なJavaScriptで行うことができます。

var req = new XMLHttpRequest(); 
req.onload = function() { 
    alert(this.responseXML.title); 
    if(req.status == 200){ 
     standard_status.label = req.responseXml.getElementsByClassName('item_color_success')[0].textContent; 
    } 
} 
req.open("GET", 'http://www.example.com/'); //must use async request for HTML 
req.responseType = "document"; 
req.send(); 

私はこれをテストしませんでしたが、遠すぎてはいけません。