1

私はこのような文字列を持っています

Hey this is my 1.20 string

私は1.20そこから抽出しようとしています。

これを行う最善の方法は何ですか?

私はこのようなことを試しましたが1.20,20、単に1.20

var query = $(".query_time").html();
var matches = query.match(/\d.(\d+)/);
4

3 に答える 3

2

match 関数の結果は、文字列ではなく配列です。だから、単に取る

var nb = query.match(/\d.(\d+)/)[0];

ところで、より正確な一致が必要な場合は、ドットもエスケープする必要があります。

var nb = query.match(/\d\.(\d+)/)[0];

または、カンマを受け入れたい場合は次のようにします (言語によって異なります)。

var nb = query.match(/\d[\.,](\d+)/)[0];

しかし、正確な正規表現は、もちろん、あなたの正確なニーズに基づいており、任意の数値 (科学表記法?) に一致するように、より複雑な正規表現を確認することをお勧めします。

于 2012-11-29T16:47:57.573 に答える
1

以下を試してください

var nb = query.match(/\d\.\d+/)[0]; // "1.20"
  • .それは任意の文字を表すため、エスケープする必要があります。
  • キャプチャ グループ (\d+) を削除すると、2 番目の一致は返されません
  • [0] インデックスを追加して、一致を取得します
于 2012-11-29T16:52:19.807 に答える
1

の値matchesは実際には[ "1.20", "20" ](これは配列です)。印刷すると、文字列に変換されるため、1.20,20.

String.matchnullまたは最初のインデックスが完全に一致した部分であり、次に必要な部分である一致の配列を返します。したがって、必要な値は ですmatches[0]

于 2012-11-29T16:48:22.227 に答える