替换字符串中的管道符号

4

您好,我需要从一个字符串中删除所有的 | 符号。这是我目前正在做的:

var mystring = "this|is|a|test"
console.log(mystring.replace(/|/g , ","));

这给我这个结果:,t,h,i,s,|,i,s,|,a,|,t,e,s,t, 这不是我想要的。为什么它不起作用?
当我尝试以下内容时,逗号可以正常工作。
var mystring = "this,is,a,test"
console.log(mystring.replace(/,/g , ":"));

这个让我得到 ----> 这个:是:一个:测试
为什么OR不能正常工作,我该如何修复?
7个回答

10

转义 | 字符。

var mystring = "this|is|a|test"
console.log(mystring.replace(/\|/g, ","));


@AvinashPrabhakar 为了确保优质答案能够帮助他人,接受那个你认为最有效的答案是考虑周到且最佳的做法。 - Seth
我确实打算接受这个答案,但我需要等待10分钟才能这样做。 - Avinash Prabhakar
3
难以相信已经有三个人抢在我之前行动了。 - Richard Hamilton

5
那是因为管道符号(|)被解释为正则表达式中的“或”操作符。不过你可以在方括号中使用管道符号,像这样:[|]

var mystring = "this|is|a|test"
console.log(mystring.replace(/[|]/g , ","));

regex101演示

方括号通常用于编写一系列字符,但是一个(正面的)副作用是在方括号环境中,大多数特殊字符被解释为字面意义,这是由regex101正则表达式解释所指定的:

  • [|] 匹配下面列表中出现的单个字符
    • | 字面上的字符|

1

您只需要转义 |,所以如果您需要的是 this|is|a|test,您需要执行console.log(mystring.replace(/\|/g , ","));


1

| 是一个特殊字符,需要用 \ 进行转义。

var mystring = "this|is|a|test";
console.log(mystring.replace(/\|/g , ","));


1
管道字符必须进行转义。
var mystring = "this|is|a|test"
console.log(mystring.replace(/\|/g, ","));

0

管道符号是一个特殊字符。你必须使用转义字符。

console.log(mystring.replace(/\|/g , ","));

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接