javascript - 使用正则表达式和 Javascript 替换方法

标签 javascript regex

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/

相关文章:

java - 如何在 Java 中将字符串与多个正则表达式模式进行匹配

javascript - jquery 在切换操作上发布值

javascript - 为什么我不能将 cookie 放入变量中,然后将结果分配给 div?

javascript - Google Apps 脚本未检测到当前行

javascript - 如何判断ajax调用是否完成?

Java - 如果单词以用户输入的定界符结尾,则执行 x

javascript - Node.js 导出变量

java - 匹配字符串中的 "\n"

regex - PowerShell -match 与 -simplematch

javascript - RegExp 问题 - 字符限制和空白忽略