我想将以下正则表达式扩展为负数。
this.value = this.value.replace(/[^0-9\.]/g, "");
我尝试添加减号来做这样的事情,(/ [^^-9.]/g,“”)但是这允许在数字的任何地方输入减号。我想只允许在数字的开头出现一个减号。后来发生的减去应该被忽略。
请帮忙。
答案 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] * /??);