Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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_String - Fatal编程技术网

Javascript 使用正则表达式操纵字符串

Javascript 使用正则表达式操纵字符串,javascript,regex,string,Javascript,Regex,String,我有一个字符串,比如说C1和C2或C3(~!@$%)和C4或C5 然后说我的输入是C3 然后我想使用regex删除C3和下一个操作符和|或之间的垃圾/数据 因此,对于上面的字符串,我希望输出为C1和C2或C3以及C4或C5 var str = 'C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5' var input = 'C3' console.log(str.replace(new RegExp("(" + input + " ).*?(AND|OR)"), "$1$

我有一个字符串,比如说
C1和C2或C3(~!@$%)和C4或C5
然后说我的输入是
C3
然后我想使用regex删除
C3
和下一个操作符
和|或
之间的垃圾/数据

因此,对于上面的字符串,我希望输出为
C1和C2或C3以及C4或C5

var str = 'C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5'
var input = 'C3'
console.log(str.replace(new RegExp("(" + input + " ).*?(AND|OR)"), "$1$2"))

垃圾数据是否总是用括号括起来?另外,到目前为止您尝试了什么?
。。对于ex
C1和C2或C3~!@$%()和C4或C5
也需要提供输入(C1/C2/C3…),因为输入可以是C2。。没有垃圾的。。那么,我不应该在c3之后删除垃圾邮件。您的变量是否总是
Cn
(其中n是一个数字)?请提供有关您的数据的详细信息,以便我们不必做出假设。下面的
C1和C2或C2和C1和C2$$#@@ORC3和C4如何。这会发生吗?中心的垃圾应该被清除吗?是的。。总是采用
Cn
的形式,而且运算符总是仅为
和|或
。。也不能有多个C2或C1。。或者字符串中的任何Cn这是非常特定于输入字符串的,不会在所有情况下都起作用。您必须用您的输入替换C3。
function purgeJunk(variable, expression) {
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) {
        if (digits != variable) return match;
        return "C" + digits + " " + operator;
    });
};

function purgeAllJunk(expression) {
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) {
        return "C" + digits + " " + operator;
    });
};

purgeJunk.regexp = /C(\d+) .*?(AND|OR)/g;

// delete junk after C2
purgeJunk(2, "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5"

// delete junk after C3
purgeJunk(3, "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 AND C4 OR C5"

// delete all junk
purgeAllJunk("C1 # AND C2 OR C3 ~!@#$% ()()()() ### AND C4 more garbage OR C5")
    == "C1 AND C2 OR C3 AND C4 OR C5"