实际上,我想替换用作给定对象的键的所有匹配字符串,以使用javascript正则表达式查找值。 例如: 我们有字符串
你好,你好吗??? !!哦!我很好。你怎么样,!!朋友!!我是!!好!! !!
和对象就好 var mapper = {" OH":" oh +"," FRIEND":"朋友+"," GOOD&# 34;:"良好+"}
然后输出应该是:
你好,你好吗?哦+我很好。那你呢,朋友+?我很好。
开始和结束!!标志最终将被仅 +符号替换。
var mapper={"OH":"oh+","FRIEND":"friend+","GOOD":"good+"};
data=data.replace(new RegExp("!![A-Z]*!!", 'g'),modifiedSubstring);

我是新手使用正则表达式,但尝试了上面放置的一些代码。在这个表达式中,我应该写什么而不是modifiedSubstring
。
答案 0 :(得分:1)
您可以查找!!word!!
等实例,并使用此正则表达式将其替换为word+
。
正则表达式: !!([A-Z]*?)!!
<强>解释强>
!!
后跟WORD
后跟!!
。替换为:
\1+
这会将WORD+
替换为匹配,因为WORD
属于首次捕获的群组。答案 1 :(得分:1)
尝试使用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;
答案 2 :(得分:1)
您可以使用括号和$ 1
捕获所需模式中的数据并使用所需的格式返回 data = "hello,how are you???!!OH!! i am fine. what about you, !!FRIEND!!? I am !!GOOD!!.";
data=data.replace(new RegExp("!!([A-Z]*)!!", 'g'),"$1+");