删除Javascript中特定字符之间的所有内容

时间:2013-12-04 13:45:35

标签: javascript

来自以下字符串的Javascript

filterExpress =%1和%2和%3以及%和%5和%6 我需要删除“%”之后的任何内容(即%和空格)以及下次出现的%。

之前

因此输出字符串应为 -

%1和%2和%3以及%5和%6 我试过使用regexp如下

filterExpress = filterExpress.replace(/%。* [^%] /,''); 但是,这与我想要的结果不符。

请帮我解决。

4 个答案:

答案 0 :(得分:1)

这是一个简短的解决方案:

var str = '%1 and %2 and %3 and % and %5 and %6';
str.replace(/% .*?%/g, '%'); // "%1 and %2 and %3 and %5 and %6"

Regexp解释说: 匹配以%[space]开头的所有内容,直到第一个%。它具有全局修饰符,因此在第一次匹配后它不会停止。它匹配两个%,因此其中一个在替换字符串中。

答案 1 :(得分:0)

与最后一个%

不匹配的正则表达式
var str='%1 and %2 and %3 and % and %5 and %6';
str=str.replace(/% .+?(?=%)/g,'');
//Match a % followed by a space than then any character until the next %
//but not including it.  Also, do a global replace.

答案 2 :(得分:0)

试试这个:

var str = '%1 and %2 and %3 and % and %6';
var newStr = '';
for(var i = 0; i < str.length; i++){
    var c = str[i];
    if(c === '%' && str[i+1] === ' '){
        i += ' and '.length;
        continue;
    }
    newStr += c;
}

答案 3 :(得分:0)

尝试以下任何一项 -

代码(使用正则表达式)DEMO

var str = '%1 and %2 and %3 and % and %5 and %6';
str=str.replace(/% [^%]+%/g, '%'); // "%1 and %2 and %3 and %5 and %6"
alert(str);
代码(不使用正则表达式)DEMO
var filterExpress = "%1 and %2 and %3 and % and %5 and %6";

//start of logic
while(filterExpress.indexOf("% ")!=-1)
{
    filterExpress=filterExpress.substr(0, filterExpress.indexOf("% "))+filterExpress.substr(filterExpress.indexOf("%",filterExpress.indexOf("% ")+1));
}
//end of logic

alert(filterExpress);
相关问题