Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式替换逗号分隔列表中的单词_Javascript_Regex - Fatal编程技术网

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

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

我正在使用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

在正则表达式模式中没有重复的单词1,有没有办法做到这一点?

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

,word1\b|\bword1\b,?
如果必须处理大字符串,并且只有在第一个字母不太频繁的情况下,才可以尝试使用第一个字符识别技术来减少测试模式的位置数:

(?=[,w])(?:,word1\b|\bword1\b,?)
(请注意,您需要在现实生活中测试这一点,看看它是否真的有益。)

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


如果您的目标字符串只是一个逗号分隔的列表,那么使用拆分/联接保留是最好的解决方案。

如果您的正则表达式有效,为什么要更改它呢?我认为您找不到更好的正则表达式。