如果没有尾随数字,简单正则表达式会使多个零为零

时间:2015-05-13 02:26:23

标签: javascript regex

我想删除testString.matches(regex) 符号前的任何数字 我想删除'$'符号后的所有'0' ','位数。
但如果仅提及$字符串,我不想删除'0's

这是我的正则表达式:'$00' or '$0' 我想从下面提到的字符串中删除所有home_value.replace(/,|(\d*\$0*)|(^0)*/g, '');0's符号。但是我们可以说,如果用户输入'$', ',' ..应该转换为'$0' or '$000'

'0'

3 个答案:

答案 0 :(得分:4)

与一个正则表达式相比,有一种更简单的方法可以做到这一点,因为你只是在美元金额之后:

var stripExcessNumbers = function (n) {
    return parseInt(String(n).split("$")[1].replace(/[^\d]/g, ""), 10);
}

只要你的数字不会太大,这就应该有效。

测试用例

var stripExcessNumbers = function (n) {
  return parseInt(String(n).split("$")[1].replace(/[^\d]/g, ""), 10);
}

var tests = "0045$002,34234 $000300 $000387687 $000 $00 $0".split(" ")
  , answers = [234234, 300, 387687, 0, 0, 0]

for (var i = 0; i < tests.length; i++) {
  document.write("<p>" + stripExcessNumbers(tests[i]) +
    ", correct answer: " + answers[i] + "</p>");
}

答案 1 :(得分:3)

你可以使用这样的正则表达式:

^.*\$(0)0*$|.*\$0*|,

<强> Working demo

查看替换部分,您有此输出:

234234
300
387687
0
0
0

答案 2 :(得分:-2)

s = '2342$08934200'
+s.substr(s.indexOf('$')+1) // 8934200

s = '$0000'
+s.substr(s.indexOf('$')+1) // 0