Javascript 正则表达式逗号检测不起作用

Posted

技术标签:

【中文标题】Javascript 正则表达式逗号检测不起作用【英文标题】:Javascript Regular Expression Comma detections not working 【发布时间】:2014-02-12 02:41:28 【问题描述】:

我有一个字符串,我想使用正则表达式和 String.replace() 删除其中的所有逗号。但是由于某种原因,一个逗号仍然存在,它正在破坏我的数据收集工作。我的正则表达式有什么问题,为什么?更具体地说,为什么“去皮”后的逗号被删除但没有“切碎”。

var troubledLine= "3 medium eggplants 6 unpeeled garlic cloves 1/2 cup extra virgin olive   oil 3 ripe medium tomatoes peeled, seeded and chopped, juices reserved 1/5 tablespoon sweet paprika 1 pinch cayenne pepper salt freshly ground black pepper 1 tablespoon finely chopped fresh flat-leaf parsley"

var correctedLine=troubledLine.replace(/,/,"RE","gi");
console.log(correctedLine);

输出 = 3 个中等大小的茄子 6 个未去皮的蒜瓣 1/2 杯特级初榨橄榄油 3 个成熟的中等大小的西红柿去皮去籽切碎,保留果汁 1/5 汤匙甜辣椒粉 1 撮辣椒粉 盐现磨黑胡椒粉 1 汤匙切碎新鲜的欧芹。

【问题讨论】:

第三个参数应该是什么?很确定.replace() 只需要两个参数。 修饰符继续正则表达式/,/g 如上所述,改用:var correctedLine=troubledLine.replace(/,/gi);.. 【参考方案1】:

replace 方法采用 2 个参数,您似乎将正则表达式语法与 RegExp 方法语法混合在一起。您可以直接使用/,/g 并使您的标志成为正则表达式模式的一部分。第二个参数是替换值,在本例中为空字符串。

将您的代码更改为以下内容:

var correctedLine = troubledLine.replace(/,/g, '');

由于您的意图是匹配逗号,因此您可以删除 i 标志,因为大小写无关紧要。

【讨论】:

【参考方案2】:

您混淆了new RegExp.replace() 的参数。

你想要.replace(/,/g, "")

【讨论】:

【参考方案3】:

由于您特别要求使用正则表达式,因此可能有点离题,但这里是另一种方式:

correctedLine = troubledLine.split(',').join('');

这样用正则表达式没有模糊性。

一些info 用于您的正则表达式的修饰符。

【讨论】:

以上是关于Javascript 正则表达式逗号检测不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 javascript 正则表达式不起作用?

Javascript 正则表达式(负)后视在 Firefox 中不起作用

为啥加号运算符在 JavaScript 的正则表达式中不起作用? [复制]

URL 正则表达式在 javascript 中不起作用

URL 正则表达式在 javascript 中不起作用

Javascript验证正则表达式不起作用