我对原始csv字符串做了很多更改。有很多逗号分隔符。我必须用“;”代替 要么只是表达式||中的逗号 .... || 或仅此表达式外的逗号。我需要进行此更改,以便在表达式|| .... ||中具有不同的定界符 与字符串的其余部分进行比较。
范例:
(.*)(?:\|\|)(?:.*)(,)(?:.*)\|\|
使用后
var regex = /myregex/g;
var str = str.replace(regex, ',')
谢谢
您可以使用
const string = "aba,bjlj,alj,ljlj||name1,name2,name3||jflkj,glfgjlf,jflg,fjlfd||name1,name2||fd,sdfsfd,dfs||name1,name2,name3,name4,name5||";
console.log( string.replace(/\|{2}[\w\W]*?\|{2}/g, (x) => x.replace(/,/g, ';')) );
正则表达式是
/\|{2}.*?\|{2}/gs // matches any text between two double pipes
/\|{2}[\w\W]*?\|{2}/g // matches any text between two double pipes
/\|{2}.*?\|{2}/g // matches any text but line breaks between two double pipes
请注意,.
不带s
修饰符标志的不匹配换行符。
正则表达式匹配双倍字符,然后匹配零个或多个字符,直到下一个双倍字符为止尽可能少。
然后,x
将整个匹配值作为参数传递给用作替换参数的匿名回调函数,并且所有逗号;
仅在匹配内部被替换。
该“相反”的解决方案是匹配和捕获双管之间的字符串,只有在所有其他上下文匹配逗号,这样你可以保持捕获并替换那些逗号:
const string = "aba,bjlj,alj,ljlj||name1,name2,name3||jflkj,glfgjlf,jflg,fjlfd||name1,name2||fd,sdfsfd,dfs||name1,name2,name3,name4,name5||";
console.log( string.replace(/(\|{2}[\w\W]*?\|{2})|,/g, (x,y) => y || ';') );
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句