允许正则表达式中的数字,包括负数

Pan*_*her 3 javascript regex jquery negative-number

我写了这个正则表达式来删除任何不是数字的东西.

     var dataTest = data.replace(/[^0-9]/gi, '');
Run Code Online (Sandbox Code Playgroud)

它将"abc123xyz"转换为"123"

但是现在我想要覆盖负数: -

      var dataTest = data.replace(/[^-0-9]/gi, ''); 
Run Code Online (Sandbox Code Playgroud)

但它允许 - 介于两者之间.它将"abc123-xyz"转换为"123-"我希望它转换为"123"

但是,如果用户给出"-123abc",则应更改为"-123".

我在javascript中调用focusout事件上的代码.我也会在jquery中接受解决方案.

geo*_*org 6

一种选择是捕获数字并删除其他所有内容:

input = "abc-123def"

clean = input.replace(/.*?(-?\d+).*/, "$1")

document.write(clean)
Run Code Online (Sandbox Code Playgroud)

或者,更有效率,match:

 clean = (input.match(/-?\d+/) || [])[0]
Run Code Online (Sandbox Code Playgroud)