JavaScript全局替换字符串

时间:2014-12-17 14:44:50

标签: javascript string replace

我有以下JavaScript变量:

var keywords = split_option_value[3];

返回console.log(keywords);以下字符串:

seo|drupal|seo marketing|wordpress|web development|web design|plugin

我想使用replace函数删除直线并添加逗号。为此,我正在使用:

var good_keywords = keywords.replace(/|/g, ',');

不幸的是,这不应该像在console.log('good_keywords')上接收一样:

,s,e,o,|,d,r,u,p,a,l,|,s,e,o, ,m,a,r,k,e,t,i,n,g,|,w,o,r,d,p,r,e,s,s,|,w,e,b, ,d,e,v,e,l,o,p,m,e,n,t,|,w,e,b, ,d,e,s,i,g,n,|,p,l,u,g,i,n,

我的代码产生此问题的问题是什么?我做错了什么?任何指导和帮助都受到欢迎。

3 个答案:

答案 0 :(得分:3)

您需要转义管道字符|

var good_keywords = keywords.replace(/\|/g, ',');

正如@FrédéricHamidi在评论中提出的那样。

p.s。:因为现在你的正则表达式意味着find all ("empty characters" OR "empty characters"),这正是你在所有角色之间收到逗号的原因。

答案 1 :(得分:2)

使用正则表达式时,|字符被视为特殊字符,必须进行转义才能按字面解释。

尝试:

var good_keywords = keywords.replace(/\|/g, ',');

答案 2 :(得分:1)

管道|是正则表达式字符。它用于接受两种语法。例如:/a|b/g即将匹配字符串中的ab。 您应该使用/\|/g