0

100 万の正規表現の質問があることは知っていますが、そのうちの 100 万 -1 を読んだことがあります。これは、私には向いていないものの 1 つにすぎません。価格番号 (10 進数かどうか) とアイテムの名前 (価格番号と < br/> の間のすべて) を抽出しようとしています。

入力:

var content = "$22 M Uniform <br/>" 

またはこのようなもの

var content = "$39 Day / Evening Class Tuition  <br/>"

また

var content = "$12.8 Weekend Class Payment <br/>"

私のコード:

   var itemprice = content.match(/(\d+)(d*(\.\d{1,2}))/);
   var itemname = content.match(/(\s)(.*?)</);

私の問題:

私の作品は正常に動作し、適切に返されますが、 null に設定されているitemnameデバッグを行うと、番号シーカーがブラウザーで動作しないようです。ここでそのコードを試すとhttp://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_i、番号を抽出して問題なく動作するitempriceため、これは奇妙です。

ウェブサイトの場合、私のコードは次のようになります。

 var str = "$39.56 Day / Evening Class Tuition  <br>";
 var patt1 =/(\d+)(d*(\.\d{1,2}))/;
 var matches = str.match(patt1)
 alert(matches[0]);
4

1 に答える 1

2

オプションのポイントを使用した単純な 10 進正規表現は次のとおりです。

/\d+(\.\d{1,2})?/

ここでデモ - http://jsfiddle.net/JXdbg/2/

ドル記号の通貨を検出するには、これに接頭辞を付けます。$

/\$\d+(\.\d{1,2})?/
于 2012-11-16T03:32:49.437 に答える