实际上,我想替换所有用作给定对象的键的匹配字符串,以使用 javascript 正则表达式查找值。 例如: 我们有字符串作为
hello,how are you???!!OH!! i am fine. what about you, !!FRIEND!!? I am !!GOOD!!.
对象就像 var mapper={"OH":"oh+","FRIEND":" friend +","GOOD":"好+"}
那么输出应该是这样的:
hello,how are you???OH+ i am fine. what about you, FRIEND+? I am GOOD+.
作为开始和结束!最后符号将被替换为 only + 符号。
var mapper={"OH":"oh+","FRIEND":"friend+","GOOD":"good+"};
data=data.replace(new RegExp("!![A-Z]*!!", 'g'),modifiedSubstring);
我刚开始使用正则表达式,但尝试了上面放置的一些代码。在这个表达式中我应该写什么而不是modifiedSubstring
。
最佳答案
尝试使用RegExp
/(\!+(?=[A-Z]+))|(\!+(?=\s|\?|\.|$))/g
匹配多个 !
字符后跟大写字母,或多个 !
字符后跟空格字符、.
字符或结尾输入。将第一个捕获组替换为 ""
空字符串,将第二个捕获组替换为 +
字符
var data = "hello,how are you???!!OH!! i am fine. what about you, "
+ "!!FRIEND!!? I am !!GOOD!!.";
data = data.replace(/(\!+(?=[A-Z]+))|(\!+(?=\s|\?|\.|$))/g
, function(match, p1, p2) {
return p1 ? "" : "+"
});
document.body.innerHTML = data;
关于javascript - 用修改后的子字符串替换所有匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35926294/