Javascript:如何从值中删除字符的出现?

时间:2017-02-16 13:47:36

标签: javascript regex

这里我试图用空格替换字符串的出现和4个字符。

对于Eg我有以下字符串:

var a=ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG

我的值为bvbfg

现在,当我得到值时,我应该将bvbfg~JJJ替换为空值,字符串应该变为

var a=ssss~ABC*ertert~PMU*trert~GFRG*qqqq~hghgh

同样,如果我将值设为qqqq,我应将qqqq~HGHGHG替换为空白值

,新值应为

var a=ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG

我尝试使用正则表达式:

如下所示(例如)

mystring.replace(/bvbfg/g , "newchar");

但我看到的结果并不好。这有点棘手。任何指导。感谢。

4 个答案:

答案 0 :(得分:1)



function remove(str, tok) {
  var regex = new RegExp('\\b' + tok + '~[^*]*\\*?', 'i'); // if you want it to be case sensetive, then remove the 'i' parameter
  return str.replace(regex, '')
          /*.replace(/^\*|\*$/, '')*/; // uncomment this to remove *s from the start and the end
}

var a = "ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG";

console.log(remove(a, "ertert"));




<强>解析:

&#13;
&#13;
function parse(str) {
  return str.split('*')
            .reduce(function(res, e) {
              var parts = e.split('~');
              res[parts[0]] = parts[1];
              return res;
            }, {});
}

var a = "ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG";

console.log(parse(a));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我是regex的新手,这是我尝试过的,似乎有用。 /bvbfg~(\w+)[*]?/g

演示:http://regexr.com/3fagf

但我建议你使用WiktorStribiżew的答案。

答案 2 :(得分:0)

在这里......简短而简单:)

&#13;
&#13;
document.getElementById('btn').onclick = function() {
var value = document.getElementById('value').value,
    a = 'ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG',
    regx = new RegExp('\\*?' + value + '~\\w*', 'g');
console.log(a.replace(regx, ''));
}
&#13;
<input id="value" type="text">
<button id="btn">Submit</button>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

将所有内容与Stribiżew的正则表达式放在一起:

function getRegexp(s) {
  return new RegExp( s + '~[^*]*\\*?', 'gi');
}

var str = 'ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG';

var s = 'bvbfg';
console.log(str.replace(getRegexp(s), ''));

s = 'qqqq';
console.log(str.replace(getRegexp(s), ''));