2012-08-16 233 views
1

嗨,我很难取代五个“|||||”到一个“|”。Javascript替换特殊字符

var ss = "123|||||456|||||789|||||"; 
var ww = ss.replace(/[|||||]\W/g, "|"); 

输出我得到的是

123|||456|||789||| 

什么是正确的正则表达式我应该写? 谢谢。

+0

方括号'[]'的语法的意思是“匹配所附字符的任何__”。 (你应该用它来列出不同的字符。)在编写正则表达式时,可以方便地引用[正则表达式指南](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/常用表达)。 – nnnnnn 2012-08-16 08:14:44

回答

3

你可以做到以下几点:

var ss = "123|||||456|||||789|||||"; 
console.log(ss.replace(/[|]{5}/g, "|")); 

正如在评论中提到的,[]定义字符类,并匹配任何在它定义的字符。例如[a-z]将匹配小写字母。

但是因为你只需要管匹配(|)字符,你可以删除括号并逃避它,像这样:

console.log(ss.replace(/\|{5}/g, "|")); 

它需要因为管道是一种特殊要由\逃脱在Java脚本中的字符。 管道后面的曲线符号{5}定义了您想要匹配的“以前”的数量。

+0

你可以删除'[]'... – nnnnnn 2012-08-16 08:16:26

+0

@nnnnnn,编辑:) – epoch 2012-08-16 08:20:23

+0

是的,我确切的5个字符。 感谢您的解决方案! – Eric 2012-08-16 08:43:22