我想删除所有的前导破折号(-),并在JavaScript中用一个破折号替换所有重复的破折号。我已经开发了一个正则表达式来做到这一点:

"----asdas----asd-as------q---".replace(/^-+()|()-+$|(-)+/g,'$3')


它的工作原理是:

asdas-asd-as-q


但是我不理解$3部分(通过绝望的实验获得)。为什么不$1

最佳答案

您实际上可以在没有任何捕获组的情况下使用它:

"----asdas----asd-as------q---".replace(/^-+|-+$|-+(?=-)/g, '');
//=> "asdas-asd-as-q"


这里的-+(?=-)是正向超前,可确保匹配匹配项中除最后一个-以外的1个或多个连字符。

关于javascript - 使用正则表达式了解替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25645419/

10-13 01:36