我有以下字符串值:£-155(-2.2%)
除此之外,我希望能够提取任何数字,可能/可能不包含' - '减号。所以上面会是:-2.2
我还需要知道该值是否具有上述形式的百分比......最终代码中将使用条件语句。
想法?
答案 0 :(得分:0)
为什么使用正则表达式这么简单?为什么不抓住字符串中的最后一个字符并检查它是数字还是%。
同样,如果要删除它,只需使用.substr()方法从字符串中删除最后一个字符:
答案 1 :(得分:0)
答案 2 :(得分: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"));