正则表达式:从开始和结束引号中删除引号 - javascript

时间:2017-09-25 07:14:30

标签: javascript regex

我想在10之后删除下面的单引号,并用空字符串替换。

所以100,50,“bla 10”bla“,20,”另一个字符串“

变为

100,50,“bla 10 bla”,20,“另一根弦”

我是如此接近,但以下是选择0“

/ [^ “]”[^ $“] /克

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用

var s = '100,,50,"bla 10" bla",20,"another string","string"';
var splits = s.split(/(?:^|,)(".*?")(?:,|$)|,/);
splits = splits.filter(function (x) { return x !== undefined;});
console.log(splits);
var res = splits.map(function(x) {
   return x.replace(/^,*(")|("),*$|"/g, '$1$2'); 
 }).join(',');
console.log(res);

<强>详情

  • (?:^|,)" - 匹配,或字符串
  • 的开头
  • ( - 捕获组的开始
  • " - "
  • .*? - 任意0个字符,尽可能少
  • " - "
  • ) - 捕获组的结束
  • (?:,|$) - ,或字符串结尾
  • | - 或
  • , - 逗号

我们收到所有匹配后,.replace(/^,*(")|("),*$|"/g, '$1$2'会删除所有"但会在匹配的开头/结尾。细节:

  • ^,*(")| - 在字符串开头(,)匹配^一次或多次,然后将"捕获到第1组,或
  • ("),*$| - 在字符串末尾(")抓取$,然后在群组2或
  • 中抓取0 + ,
  • " - 匹配任何其他"

$1$2替换模式“恢复”捕获到组1和组2中的"(即保留" s,它们位于字符串的开头,带有可选{ {1}}在字符串的前面或末尾,并删除所有其他内容。)

相关问题