Javascript 正则表达式替换逗号分隔列表中的单词
我正在使用javascript.replace()从逗号分隔的单词列表中删除一个单词,并找到了一个可行的解决方案,但它很笨拙,我认为一定有更好的解决方案 正则表达式看起来像:Javascript 正则表达式替换逗号分隔列表中的单词,javascript,regex,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 complet
/,word1|word1,?/
处理前导、嵌入和尾随的情况,并删除正确数量的逗号,例如
word1,word2,word3
word2,word1,word3
word2,word3,word1
All result in word2,word3
word1 on its own is removed completely
在正则表达式模式中没有重复的单词1,有没有办法做到这一点?没有更好或更短的模式可以做到这一点。您所能做的就是通过添加可能缺少逗号的单词边界来避免误报:
,word1\b|\bword1\b,?
如果必须处理大字符串,并且只有在第一个字母不太频繁的情况下,才可以尝试使用第一个字符识别技术来减少测试模式的位置数:
(?=[,w])(?:,word1\b|\bword1\b,?)
(请注意,您需要在现实生活中测试这一点,看看它是否真的有益。)
没有正则表达式的其他方式
如果您的目标字符串只是一个逗号分隔的列表,那么使用拆分/联接保留是最好的解决方案。如果您的正则表达式有效,为什么要更改它呢?我认为您找不到更好的正则表达式。