javascript - 删除逗号分隔字符串中的字符串

标签 javascript regex

我想删除逗号分隔字符串中的字符串,我想通过正则表达式执行此操作。

   var strToReplace = 'bbb';
   var str = 'values["aaa","bbb","ccc"]';

我遇到的问题是逗号。 仅替换所需的字符串会留下逗号,因此我添加了删除以下逗号(如果存在)。

   var replaceRegexp = new RegExp('"'+ strToReplace +'",?');
   str = str.replace(replaceRegexp,'');

但是,如果它是最后一项,它会留下尾随逗号。如果删除第一项并添加到两侧将在从中间项删除时删除逗号,则将其添加到前面会出现相同的问题。

我刚刚添加了另一个替换字符串以在删除项目后删除尾随的字符串。

   str = str.replace('",]','"]');

有人能指出一种更优雅的方式来仅用一个正则表达式来处理这个问题吗?谢谢

编辑:

   var str = 'values["aaa","bbb","ccc"]';
   var str = 'values["bbb"]';
   var str = 'values["aaa","bbb","ccc","bbb"]';

最佳答案

您需要使用交替运算符|

你要替换的字符串在中间

> var strToReplace = 'bbb';
undefined
> var str = 'values["aaa","bbb","ccc"]';
undefined
> var replaceRegexp = new RegExp('"'+ strToReplace +'",|,"'+ strToReplace +'"', 'g');
undefined
> str.replace(replaceRegexp,'');
'values["aaa","ccc"]'

你要替换的字符串在最后

> var str = 'values["aaa","ccc","bbb"]';
undefined
> var strToReplace = 'bbb';
undefined
> var replaceRegexp = new RegExp('"'+ strToReplace +'",|,"'+ strToReplace +'"', 'g');
undefined
> str.replace(replaceRegexp,'');
'values["aaa","ccc"]'

要替换的字符串在第一个

> var strToReplace = 'bbb';
undefined
> var str = 'values["bbb","aaa","ccc"]';
undefined
> var replaceRegexp = new RegExp('"'+ strToReplace +'",|,"'+ strToReplace +'"', 'g');
undefined
> str.replace(replaceRegexp,'');
'values["aaa","ccc"]'

| 称为交替或逻辑或运算符。但是逻辑 OR 运算符是必须的。

起初,正则表达式引擎会尝试使用 | 符号之前的模式匹配所有字符。之后,它会尝试使用 | 运算符旁边的模式匹配剩余 字符(在本例中)。

所以上面正则表达式的第一部分 "bbb", 匹配所有的 bbb, 字符串但是它不能匹配最后的 bbb因为它后面没有逗号。然后下一个模式 ",bbb" 开始攻击并匹配最后一个 ,bbb 字符串。

如果你想删除 "bbb" 如果列表只有 "bbb"

,你可以使用下面的正则表达式
> var str = 'values["bbb"]';
undefined
> var replaceRegexp = new RegExp('"'+ strToReplace +'",|,?"'+ strToReplace +'"', 'g');
undefined
> str.replace(replaceRegexp,'');
'values[]'

关于javascript - 删除逗号分隔字符串中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27597638/

相关文章:

c# - 正则表达式以避免 HTML 标签和空值

正则表达式字母数字字符串丢弃最后 3 位数字和最终的初始 0

java - 从字符串中删除非字母字符会留下 UTF-16 高代理项

javascript - 刷新选择选项

javascript - 将 setTimeout 函数分配给 Vue 方法

javascript - DrawerNavigator - 未定义是一个函数

ios - 如何使用 NSRegularExpression 提取字符串的特定部分?

Java 正则表达式 : Capture part after a character but don't replace the character

javascript - jsplumb 如何使用直连器

javascript - 在url中调用变量js