0

次の文字列値があります: £-155 (-2.2%)

その中から、数値であり、「-」マイナス記号を含む場合と含まない場合があるものをすべて抽出できるようにしたいと考えています。したがって、上記は次のようになります: -2.2

また、値が上記のような形式でパーセンテージを持っているかどうかを知る必要があります...最終的なコードで条件ステートメントが使用されます。

考え?

4

3 に答える 3

0

なぜこんなに単純なものに正規表現を使うのですか?文字列の最後の文字を取得して、それが数字か%かを確認してみませんか。

同様に、削除する場合は、.substr()メソッドを使用して文字列から最後の文字を削除するだけです。

http://www.w3schools.com/jsref/jsref_substr.asp

于 2012-08-16T16:32:15.553 に答える
0

基本的に、以前に度も回答 された番号と一致する正規表現が必要です。

次に、それを取得したら、オプションのパーセント記号(%?)を追加し、一致した文字列にその存在があるかどうかを確認します。

于 2012-08-16T16:32:18.160 に答える
0
// An optional sign and either an integer followed by an optional fraction
// or a decimal fraction.
var numberRe = '[+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+)';

// Matches a number (in group 1)
// and an optional percentage in parentheses (in group 2).
var quantity = new RegExp(
    '(' + numberRe + ')(?:\\s*[(]\\s*(' + numberRe + ')\\s*%\\s*[)])?'); 

一致するquantity場合は、グループ1の数値と、グループ2の任意のパーセンテージを取得する必要があります。

JSON.stringify(quantity.exec('£-155 (-2.2%)'))
["-155 (-2.2%)", "-155", "-2.2"]

それらを数値として取得するには、次のようにparseFloatまたは単項+を使用します

var match = quantity.exec('£-155 (-2.2%)');
var n = +match[1], pct = match[2] != null ? +match[2] / 100 : NaN;
alert('n = ' + n + ', whole = ' + (pct ? n / pct : "unknown"));
于 2012-08-16T16:32:26.190 に答える