将正则表达式扩展为负数

时间:2012-12-12 17:45:50

标签: javascript jquery regex

我想将以下正则表达式扩展为负数。

this.value = this.value.replace(/[^0-9\.]/g, "");

我尝试添加减号来做这样的事情,(/ [^^-9.]/g,“”)但是这允许在数字的任何地方输入减号。我想只允许在数字的开头出现一个减号。后来发生的减去应该被忽略。

请帮忙。

4 个答案:

答案 0 :(得分:7)

呃,替换每个非数字字符会让事情变得更难 - 就像“否定”正则表达式一样。我想出的是一个negative lookahead,如果它位于字符串的开头(使用start anchor),则阻止减号 - 这将与[^0-9.]匹配 - 匹配。

….replace(/(?!^-)[^0-9.]/g, "")

答案 1 :(得分:4)

为何选择RegEx?怎么样:

var temp = parseFloat(this.value)
this.value = isNaN(temp) ? "" : temp;

这也应该有效:

var temp = +this.value;
this.value = isNaN(temp) ? "" : temp;

答案 2 :(得分:2)

将短划线放在角色类之外:

this.value = this.value.replace(/^-?[^0-9\.]/g, "");

答案 3 :(得分:0)

您提供的正则表达式对于正数本身是错误的,因为它会将“100 + 200 = 300”转换为“100200300”。

我建议你试试这个: someString.match(/ - [\ d] + [\ d] * /??);