javascript - 删除除点、逗号和 '$' 之外的非数字字符 ?

标签 javascript jquery

我需要一个函数来删除除数字 + 字符之外的所有字符:'$'、'.'和','。

我该怎么做?

最佳答案

> 'worth $12,345.00 dollars'.replace(/[^0-9$.,]/g, '')
"$12,345.00"

这就是您要的答案。我不推荐它来提取货币,因为它可能会遇到这样的问题:

> 'A set of 12 worth between $123 and $456. A good buy.'.replace(/[^0-9$.,]/g, '')
"12$123$456.."

如果你只想提取类似货币形式的表达式,你可以这样做:

> 'set of 12 worth between $123.00 and $45,678'.match(/\$[0-9,]+(?:\.\d\d)?/g)
["$123.00", "$45,678"]

如果您需要更复杂的匹配(例如,您只想提取美元值(value)而忽略美分值(value)),您可以执行类似 How do you access the matched groups in a JavaScript regular expression? 的操作,例如:

> var regex = /\$([0-9,]+)(?:\.(\d\d))?/g;
> while (true) {
>     var match = regex.exec('set of 12 worth between $123.00 and $45,678');
>     if (match === null)
>         break;
>     console.log(match);
> }
["$123.00", "123", "00"]
["$45,678", "45,678", undefined]

(因此请注意,javascript 正则表达式对象不是不可变/最终对象,但具有状态并可用于迭代,如上所示。因此您不能“重用”正则表达式对象。即使传递 myRegex2 = RegExp( myRegex) 将混合状态;构造函数的一个非常糟糕的语言决定。请参阅有关如何在 javascript 中正确克隆正则表达式的附录。)如果您愿意,可以将上面的代码重写为一个非常奇特的 for 循环:

var myString = 'set of 12 worth between $123.00 and $45,678';
var regex = '\$([0-9,]+)(?:\.(\d\d))?';

for(var match, r=RegExp(regex,'g'); match=regex.exec(myString) && match!==null; )
    console.log(match);

附录 - 为什么不能重用 javascript RegExp 对象

糟糕的语言设计,展示了状态是如何重用的:

var r=/(x.)/g
var r2 = RegExp(r)

r.exec('xa xb xc')
["xa", "xa"]
r2.exec('x1 x2 x3')
["x2", "x2"]

如何在 javascript 中正确克隆正则表达式(您必须用字符串定义它):

var regexTemplate = '(x.)'

var r = RegExp(regexTemplate, 'g')
var r2 = RegExp(regexTemplate, 'g')

r.exec('xa xb xc')
["xa", "xa"]
r2.exec('x1 x2 x3')
["x1", "x1"]

如果您希望以编程方式保留标志,例如 'g',您可以使用 regexTemplate = ['(x.)', 'g']; RegExp.apply(this, regexTemplate).

关于javascript - 删除除点、逗号和 '$' 之外的非数字字符 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761279/

相关文章:

javascript - 使用 jQuery 或纯 JavaScript 的 html 子字符串

javascript - KMZ 点在 Google map 中以小比例显示在不准确的位置

javascript - Jquery点击失败

javascript - IE > 7 中的另一个 "z-index not working",研究后找不到答案

javascript - 如何禁用单击时隐藏输入

javascript - SyntaxError : JSON. 解析:意外字符

javascript - 使 Iframe 高度适合其内容

javascript - 如何在[浏览器选项卡关闭、浏览器关闭、后退、刷新]上调用函数

javascript - jQuery UI 最小脚本错误

javascript - 使用带有 onclick 的目标 ="_blank"时新窗口未打开