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

Allow numbers in regex including the negative

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

     var dataTest = data.replace(/[^0-9]/gi, '');

它将 "abc123xyz" 转换为“123”

但是现在我也想涵盖负数:-

      var dataTest = data.replace(/[^-0-9]/gi, ''); 

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

但是,如果用户输入 "-123abc" ,则应更改为 "-123"。

我在 javascript 中的 focusout 事件中调用此代码。我也将在 jquery 中接受解决方案。

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

input = "abc-123def"

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

document.write(clean)

或者更有效地使用 match:

 clean = (input.match(/-?\d+/) || [])[0]