我试图根据它后面的字符替换%
字符串。
我尝试过使用:
var indexOfPercent = newString.indexOf("%");
然后检查indexOfPercent+1
的字符,但indexOf
仅返回第一次出现的'%'。
我怎样才能得到所有事件?也许有更简单的方法(正则表达式)?
编辑:
最后,我想将%
次出现的所有内容替换为%%
,但如果百分号是%@
或%@
的一部分,则不会。
总结一下:我的字符串:Test%@ Test2%s Test3%.
应如下所示:Test%@ Test2%s Test3%%.
我尝试过这样的事情:
//?!n Matches any string that is not followed by a specific string n
//(x|y) Find any of the alternatives specified
var newString = newString.replace(\%?![s]|\%?![%], "%%")
但它没有发现任何字符串。我不熟悉正则表达式,所以也许这是一个简单的错误。
由于
答案 0 :(得分:1)
试试这段代码:
// replace all '%'
var StrPercent = '%100%ffff%';
var StrNoPersent = StrPercent.replace(/\%/g,'');
Logger.log(StrNoPersent); // 100ffff
修改强>
在您的情况下,您需要RegEx,其中字符后面没有字符组。这里有一个类似的问题:
Regular expressions - how to match the character '<' not followed by ('a' or 'em' or 'strong')?
你的代码:
function RegexNotFollowedBy() {
var sample = ['Test%@',
'Test2%s',
'Test3%',
'%Test4%'];
var RegEx = /%(?!s|@)/g;
var Replace = "%%";
var str, newStr;
for (var i = 0; i < sample.length; i++) {
str = sample[i];
newStr = str.replace(RegEx, Replace);
Logger.log(newStr);
}
}
我将解释表达式/%(?!s|@)/g
:
%
- 看'%'(text1|text2|text3...|textN)
- 没有后跟text1,2等。g
- 寻找任何搜索文本的准确性