次の文字列値があります: £-155 (-2.2%)
その中から、数値であり、「-」マイナス記号を含む場合と含まない場合があるものをすべて抽出できるようにしたいと考えています。したがって、上記は次のようになります: -2.2
また、値が上記のような形式でパーセンテージを持っているかどうかを知る必要があります...最終的なコードで条件ステートメントが使用されます。
考え?
次の文字列値があります: £-155 (-2.2%)
その中から、数値であり、「-」マイナス記号を含む場合と含まない場合があるものをすべて抽出できるようにしたいと考えています。したがって、上記は次のようになります: -2.2
また、値が上記のような形式でパーセンテージを持っているかどうかを知る必要があります...最終的なコードで条件ステートメントが使用されます。
考え?
なぜこんなに単純なものに正規表現を使うのですか?文字列の最後の文字を取得して、それが数字か%かを確認してみませんか。
同様に、削除する場合は、.substr()メソッドを使用して文字列から最後の文字を削除するだけです。
// 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"));