2

私は.Netに次の正規表現を持っています

(?<=Visitors.{0,100}?"value">)[0-9,]+(?=</div>)

そして次のテキスト

<div class="text">Visitors</div> <div class="value">14,000,000</div>
<div class="text">VisitorsFromItaly</div> <div class="value">15,200</div>

正規表現で「Visitors」または「VisitorsFromItaly」を指定すると、特定の訪問者数が得られます。

これをJavaScriptで行いたいのですが、.replaceメソッドを使用しません。シンプルでシンプルなjavascript正規表現が必要です。私はjavascript正規表現が初めてなので、変換方法がわかりません。javascript は後読みをサポートしていないと書かれており、それが私の .Net regex を機能させているのです。

どんな助けでも大歓迎です。事前にどうもありがとう!!!

4

3 に答える 3

2

私はあなたを理解しているかどうかわかりません.後読みアサーションが本当に必要ですか?

次のようなものだけを一致させることはできませんか?

myRegex = /Visitors.{0,100}"value">([0-9,]+)/; // or with /g modifier on the end?
myMatches = myRegex.exec(stringToMatch);

myMatches[0] には、一致した文字列全体が含まれます。myMatches[1] 以降には、正規表現の括弧で示される最初、2 番目などのキャプチャ グループが含まれます。この場合、myMatches[1] には番号が含まれます。

数字の前に他に何かを一致させる必要はないように見えるので (ビジターなどを除いて)、後読みアサーションはまったく必要ないと思います。

于 2009-08-14T01:43:29.560 に答える
1

それを試してみてください:

var regex = /visitors<\/div>\s?<div class="value">([\d,]+)/i;

var input = '<div class="text">Visitors</div> <div class="value">14,000,000</div><div class="text">VisitorsFromItaly</div> <div class="value">15,200</div>
';

if(regex.test(input)) { 
  var match = input.match(regex); 
  alert(match); 
} else { 
  alert("No matches found!"); 
}
于 2011-05-12T16:26:42.207 に答える
0

このデータを文字列として取得していますか?または、DOM オブジェクト (AJAX 応答など) にアクセスできますか?

後者にアクセスできる場合は、正規表現を気にしません。

于 2009-08-13T15:53:41.327 に答える