删除逗号分隔字符串内的字符串
Removing a string inside a comma delimited string
我想删除逗号分隔字符串内的字符串,我想通过正则表达式执行此操作。
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[]'
"bbb",|,?"bbb"
您可以尝试这样的东西,它将满足所有条件。请参阅演示。
https://regex101.com/r/vN3sH3/40
在我看来这是最佳的。
var strToReplace = 'bbb',
re = new RegExp('(,?)"' + strToReplace + '"(,?)', 'g'),
str = 'values["bbb","aaa","ccc","bbb","ccc","aaa","bbb"]';
str = str.replace(re, function(match, sub1, sub2) {
if (!sub1.length || !sub2.length) {
return '';
} else {
return ',';
}
});
document.getElementById('result').textContent = str;
console.log(str);
<div id="result"></div>
这是我的javascript代码中使用的正则表达式,它对我有用,因为查找字符串是"findme":
/^findme,|,findme$|,findme(?=,)/
还有这样的代码片段:
var find = form1.find.value;
var source = form1.source.value;
var regex = new RegExp("^"+find+",|,"+find+"$|,"+find+"(?=,)");
var result = source.replace(regex, "");
相关文章:
- 可以't用回车符分隔那个字符串
- 计算输入中有多少逗号分隔的字符串
- 比较逗号分隔的字符串
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 在javascript中用逗号分隔的字符串分割值
- 如何从由“”分隔的字符串中提取最后一个文本|&”;
- JS将分隔符分隔的字符串转换为数组元素
- jQuery:如何添加<br/>在不同的字符串中换行以分隔2中的句子
- 将逗号分隔的字符串转换为 JavaScript 数组
- 将字符串分隔成数字值
- 解析 HTML 或纯文本文件并返回由字符串分隔的文本
- 将字符串分隔在特定字符周围
- 我想将输入的字符串分隔为印度货币格式,就像我输入123456表示一样,那么我想得到 1,23,456
- Javascript将字符串分隔成不同的变量
- 将日期字符串分隔到JS对象中
- 将两个字符串分隔为两个变量
- SQLite插入到表中,使用JSON.stringyfy.以带引号的字符串分隔
- 将字符串分隔为整数,并存储总和和平均值
- Node js将字符串分隔成数组
- 使用正则表达式将任何字符串分隔成一个完整的单词,标点符号&html标记