friend 们,
我对 Javascript 和正则表达式都很陌生,希望您能提供帮助!
在 Javascript 函数中,我需要检查逗号 (,) 是否出现 1 次或多次。如果是,则其两侧应该有一个或多个数字。
例如
1,000.00 就可以了
1,000,00 就可以了
,000.00 不行
1,,000.00 不行
如果满足这些条件,我希望删除逗号,以便 1,000.00 变为 1000.00
我尝试过的是:
var x = '1,000.00';
var regex = new RegExp("[0-9]+,[0-9]+", "g");
var y = x.replace(regex,"");
警报(y);
运行时警报显示“.00”,这不是我所期望或想要的!
预先感谢您提供的任何帮助。
强文字 编辑 强文字
感谢大家迄今为止的投入和给出的 3 个答案。不幸的是,我认为我没有很好地解释我的问题。
我想要实现的是:
如果文本中有逗号,并且其两侧都有一个或多个数字,则删除逗号,但保留字符串的其余部分不变。
如果文本中有逗号,并且其两侧都没有至少一个数字,则不执行任何操作。
所以使用上面的例子:
1,000.00 变为 1000.00
1,000,00 变为 100000
,000.00 保留为 ,000.00
1,,000.00 保留为 1,,000.00
对造成的困惑表示歉意!
最佳答案
对于高于 1000 的阶数,您的正则表达式不会非常灵活,并且对于没有逗号的输入存在问题。更成问题的是,您还匹配并替换了您感兴趣的数据部分!
最好有一个正则表达式来匹配有问题的表单并将其删除。
以下内容(按顺序)匹配输入开头、输入末尾的逗号,前面是多个非数字,或者后面是多个非数字。
var y = x.replace(/^,|,$|[^0-9]+,|,[^0-9]+/g,'');
顺便说一句,如果您碰巧能够做到lookbehind,那么所有这一切都会容易得多。但几乎每个 JS 实现都没有。
根据问题更新进行编辑:
好吧,我不会试图理解为什么你的规则是这样的,但是正则表达式可以更简单地解决它:
var y = x.replace(/(\d),(\d)/g, '$1$2');
关于javascript - 使用正则表达式和 Javascript 替换方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767666/