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 正则表达式(负)后视在 Firefox 中不起作用