1

我们这里有一位开发人员,他在 Web 应用程序中添加了以下代码行:

var amount = newValue.replace(/[^\d.-]/g, '');

特定行处理用户可以输入到字段中的金额值。

关于正则表达式,我知道以下内容:

  1. 它用空字符串替换匹配项(即删除它们)
  2. /g是一个标志,表示匹配“newValue”中的所有事件
  3. 方括号[]表示一个特殊的组
  4. ^表示行首
  5. d表示数字

不幸的是,我不知道这应该匹配什么样的字符串。我检查了一些基于 Web 的正则表达式测试器是否匹配例如98.-之类的字符串以及其他带有数字的替代项,但到目前为止还没有运气。

我的问题是它似乎使 IE 非常慢,所以我需要用其他东西替换它。

对此的任何帮助将不胜感激。

编辑: 感谢所有回答的人。我不仅尝试了 Google,还尝试了 myregextester.com、regular-expressions.info、phpliveregex.com 等网站。我的问题是误解了^的含义,并期望这需要一个像 44.99 这样的数字字符串。

4

2 回答 2

13

在组内,当^是第一个字符时,它作为字符匹配的否定。换句话说,它是说匹配任何不是组中的字符。

所以这将意味着“匹配任何不是数字、句点或连字符的东西”。

于 2013-10-24T22:19:51.217 回答
2

^ 字符是一个否定字符。

var newValue = " x44x.-x ";
var amount = newValue.replace(/[^\d.-]/g, '');
console.log(amount);

将打印

44.-

我怀疑开发人员可能只是想删除尾随空格?我宁愿尝试解析数字字符串并删除其他任何内容。

于 2013-10-24T22:24:37.687 回答