1

私は正規表現が初めてです。次を含む変数があります。

<b><font color="#32748">My string:</font></b>
<big>  My value </big>
<br>

My string変数内の文字列は、 and My value(ランダム値)を変更して複数回繰り返します。My value具体的なものを見つけてMy string(値)を新しい変数に格納する必要があります。その文字列にはスペースがある場合もあれば、スペースがない場合もあります。

4

3 に答える 3

1

HTML の解析に正規表現を使用することは避けるべきです。特に、これを行うための非常に強力なツールがすべてのブラウザーに組み込まれています。

これは正規表現を使用しないソリューションです。かなり単純だと思います。

仕組みは次のとおりです。

  • HTML要素を作成します
  • ブラウザーには、非常に優れた HTML パーサーが既に含まれています :) これは、Web ページの場合と同様に、名前のスペース、エスケープされたエンティティ、部分的な HTML などのエッジ ケースを処理します。要素に HTML をダンプします。
  • querySelector 構文を使用して要素をクエリできます。または、古いファッションの男であれば、さらに単純な getElementsByTagName を使用できます。
  • textContentプロパティを使用してテキストを取得します。

実際のコード:

var test = '<b><font color="#32748">My string:</font></b><big>  My value </big><br>';

// we create an empty element and put the html in it
var div = document.createElement("div");
div.innerHTML = test;

// get the text from the font tag, as you asked for.
var test = div.querySelector("font").textContent; 

フィドル

<font>タグは非推奨であり、新しいコードでは使用しないでください。現在の HTML5 仕様を調べて、最新の HTML でどのように機能するかを確認することを検討します。

注 2、oldIE では使用できないため、 or を実行できtextContentます。innerHTMLinnerText

于 2013-08-16T13:16:07.000 に答える
1
var myRegEx = /<b><font color="#[0-9]{3,6}">(.+)<\/font><\/b>[\r\n]{0,2}<big>(.+)<\/big>[\r\n]{0,2}<br>/i;
var myString = '<b><font color="#32748">My string:</font></b>\n<big>  My value     </big>\n<br>';
var myResult = myString.match(myRegEx);
console.log(myResult[1] + " | " + myResult[2]);

正規表現:
[0-9]0 ~ 9 の範囲の任意の 1 文字に一致します。
{3,6}前のトークンの 3 ~ 6 に一致します。
(.+)キャプチャーグループ。
.dotall が false の場合、改行を除き、任意の文字に一致します。
+先行するトークンの 1 つ以上に一致します。
\n改行文字。
\rキャリッジ リターン文字。
[\r\n]セット内の任意の 1 文字に一致します。
{0,2}先行するトークンの 0 から 2 に一致します。

コードに適用するだけです。http://gskinner.com/RegExr/でテストできます。

于 2013-08-16T13:04:28.213 に答える
-1

次のようなものに jquery を使用します。

var t = '<b><font color="#32748">My string:</font></b><big>  My value </big><br><b><font color="#32748">My string1:</font></b><big>  My value1 </big><br>';

var data = $('big', $('<div/>').append(t)).map(function() {
  return $.trim($(this).text());
});

console.log(data[0]);  // My value 
console.log(data[1]);  // My value1
于 2013-08-16T13:21:18.283 に答える