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"
在1RegExp
操作中我可以在2
RegExp
操作中完成,如var str = ",,,a,,,b,,,,c,,,,,,,,d,,,,,,";
str = str.replace(/,+,/g,",").replace(/^,*|,*$/g, '');
是否可以在1
RegExp
操作中执行此操作?您可以使用正则表达式,它位于开头或后跟逗号,或位于and,并用空字符串替换它
/^,*|,(?=,|$)/g
- 第一个备选方案
^,*
断言字符串开头的位置^
按字面意思匹配字符,*
(区分大小写),
量词-在零次和无限次之间进行匹配,尽可能多地进行匹配,根据需要进行回馈(贪婪)*
- 第二个备选方案
,+(?=,|$)
按字面意思匹配字符,+
(区分大小写),
量词-在一次和无限次之间进行匹配,尽可能多地进行匹配,根据需要进行回馈(贪婪)+
- 正向前瞻
断言下面的正则表达式匹配(?=,|$)
- 第一个备选方案
,
按字面意思匹配字符(区分大小写),
- 第二个备选方案
$
断言字符串末尾的位置$
- 第一个备选方案
- 全局模式标志
:global。所有比赛(第一场比赛后不返回)g修饰语
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)你能把这个模式分解一下,解释一下它是如何工作的吗?@Oridori,就这么简单,plz@OriDrori您可以查看上的解释,通过可以使用的替换操作的数量来提高效率。我将其优化为/^,+|,+(?![^,])/g
这有两个操作,OP请求1个操作。@wdosanjos“join”这不是一个搜索操作我想你是想使用[^,]+
,因为目前它对,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“应该变成“abc”,但你的代码给出了“a,b,c”,你刚刚隐藏了加入了,但它仍然在引擎盖下使用。无论如何,这不是一个搜索操作。“我想在1次搜索中将其转换为“a、b、c、d”,我可以在2次搜索中完成它”您能准确描述一下“搜索”和“搜索”在问题中的含义吗?搜索基本上是指转换给定字符串所需的RegExp操作数“搜索基本上是指转换给定字符串所需的RegExp操作数“为了清楚起见,您是否考虑过在问题中包含该描述?这意味着答案符合原始问题的要求,是吗?是的,我会更新描述,以明确说明,我不要求自己的答案被接受,甚至投票。接受最符合要求的答案。只是指出,原始问题的文本并不清楚“搜索”和“搜索”对于要求的含义。