将正则表达式扩展为负数

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

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

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

请帮忙。

呃,替换每个非数字字符会让事情变得更难 – 就像“否定”正则表达式一样。 我想出的是一个负向前瞻 ,防止减去 – 这将与[^0-9.]相匹配 – 如果它在字符串的开头(使用起始锚点 )匹配的话:

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

为何选择RegEx? 怎么样:

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

这应该也有效:

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

把你的破折号放在角色类之外:

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

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

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