用修改后的子串

时间:2016-03-10 20:12:14

标签: javascript regex replace

实际上,我想替换用作给定对象的键的所有匹配字符串,以使用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

3 个答案:

答案 0 :(得分:1)

您可以查找!!word!!等实例,并使用此正则表达式将其替换为word+

正则表达式: !!([A-Z]*?)!!

<强>解释

  • 匹配!!后跟WORD后跟!!

替换为:

  • \1+这会将WORD+替换为匹配,因为WORD属于首次捕获的群组。

<强> Regx101 Demo

答案 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+");