正则表达式替换逗号分隔列表中的单词

时间:2014-11-08 15:13:05

标签: javascript regex

我正在使用javascript .replace()从逗号分隔的单词列表中删除一个单词,并且有一个有效的解决方案,但它很笨拙,我认为必须有一个更好的单词。

正则表达式看起来像:

/,word1|word1,?/ 

处理前导,嵌入和尾随的情况并删除正确数量的逗号,例如

word1,word2,word3
word2,word1,word3
word2,word3,word1
All result in word2,word3
word1 on its own is removed completely

有没有办法在正则表达式模式中没有重复的word1的情况下做到这一点?

1 个答案:

答案 0 :(得分:0)

没有更好或更短的模式可以做到这一点。您所能做的就是通过在逗号可能丢失的位置添加单词边界来避免误报:

,word1\b|\bword1\b,?

如果必须处理大字符串,并且只有第一个字母不太频繁,您可以尝试使用第一个字符识别技术来减少测试模式的位置数量:

(?=[,w])(?:,word1\b|\bword1\b,?)

(请注意,您需要在现实生活中测试它是否真的有益。)

没有正则表达式的其他方式

如果您的目标字符串只是逗号分隔列表,则使用拆分/连接仍然是最佳解决方案。