Javascript “合并连续的”&引用;变成一个单一的“&引用;并移除前导和尾随“&引用;在一个RegExp中

Javascript “合并连续的”&引用;变成一个单一的“&引用;并移除前导和尾随“&引用;在一个RegExp中,javascript,regex,Javascript,Regex,假设我有一根绳子 ",,,a,,,,,b,,c,,,,d,,,," 我想把这个转换成 "a,b,c,d" 在1RegExp操作中 我可以在2RegExp操作中完成,如 var str = ",,,a,,,b,,,,c,,,,,,,,d,,,,,,"; str = str.replace(/,+,/g,",").replace(/^,*|,*$/g, ''); 是否可以在1RegExp操作中执行此操作?您可以使用正则表达式,它位于开头或后跟逗号,或位于and,并用空字符串替换它 /^,*|,

假设我有一根绳子

",,,a,,,,,b,,c,,,,d,,,,"
我想把这个转换成

"a,b,c,d"
在1
RegExp
操作中

我可以在2
RegExp
操作中完成,如

var str = ",,,a,,,b,,,,c,,,,,,,,d,,,,,,";
str = str.replace(/,+,/g,",").replace(/^,*|,*$/g, '');

是否可以在1
RegExp
操作中执行此操作?

您可以使用正则表达式,它位于开头或后跟逗号,或位于and,并用空字符串替换它

/^,*|,(?=,|$)/g

  • 第一个备选方案
    ^,*

    ^
    断言字符串开头的位置

    • ,*
      按字面意思匹配字符
      (区分大小写)

      *
      量词-在零次和无限次之间进行匹配,尽可能多地进行匹配,根据需要进行回馈(贪婪)

  • 第二个备选方案
    ,+(?=,|$)

    • ,+
      按字面意思匹配字符
      (区分大小写)

      +
      量词-在一次和无限次之间进行匹配,尽可能多地进行匹配,根据需要进行回馈(贪婪)

    • 正向前瞻
      (?=,|$)

      断言下面的正则表达式匹配

      • 第一个备选方案

        按字面意思匹配字符(区分大小写)

      • 第二个备选方案
        $

        $
        断言字符串末尾的位置

  • 全局模式标志

    g修饰语
    global。所有比赛(第一场比赛后不返回)

var string=“,,,a,,,,,,b,c,,,,d,,,,,”;

log(string.replace(/^,*|,+(?=,|$)/g,)下面的方法使用两个过程返回预期结果
.match()
和template literal,当将封装的
javascript
表达式赋给变量时,将其转换为字符串

您可以使用
String.prototype.match()
RegExp
/[^,]+/
来否定匹配的逗号字符
,匹配除
之外的一个或多个字符,包括
RegExp
后面的字符类中的
+
,其中
被否定以匹配
“abc”
按照@4castle的建议;将结果数组转换为字符串的模板文本

var str=“,,,a,,,b,,,,,c,,,,,,,,d,,,efg,,,,”;
str=`${str.match(/[^,]+/g)}`;

console.log(str)/^,+|,+(?![^,])/g
这有两个操作,OP请求1个操作。@wdosanjos“join”这不是一个搜索操作我想你是想使用
[^,]+
,因为目前它对
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“应该变成“abc”,但你的代码给出了“a,b,c”,你刚刚隐藏了
加入了
,但它仍然在引擎盖下使用。无论如何,这不是一个搜索操作。“我想在1次搜索中将其转换为“a、b、c、d”,我可以在2次搜索中完成它”您能准确描述一下“搜索”和“搜索”在问题中的含义吗?搜索基本上是指转换给定字符串所需的RegExp操作数“搜索基本上是指转换给定字符串所需的RegExp操作数“为了清楚起见,您是否考虑过在问题中包含该描述?这意味着答案符合原始问题的要求,是吗?是的,我会更新描述,以明确说明,我不要求自己的答案被接受,甚至投票。接受最符合要求的答案。只是指出,原始问题的文本并不清楚“搜索”和“搜索”对于要求的含义。