来自以下字符串的Javascript
filterExpress =%1和%2和%3以及%和%5和%6 我需要删除“%”之后的任何内容(即%和空格)以及下次出现的%。
之前因此输出字符串应为 -
%1和%2和%3以及%5和%6 我试过使用regexp如下
filterExpress = filterExpress.replace(/%。* [^%] /,''); 但是,这与我想要的结果不符。
请帮我解决。
答案 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)
尝试以下任何一项 -
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);
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);