javascript - 用修改后的子字符串替换所有匹配的字符串

标签 javascript regex replace

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

相关文章:

javascript - 为什么带有全局标志的正则表达式会给出错误的结果?

regex - LPAD 和 REGEXP_REPLACE 交互变得不稳定?

unicode - 在 Unicode 中查找相似的 ASCII 字符

javascript构造函数没有给出正确的结果

javascript - 如何通过 mouseover/mouseout 在 <div> 附近显示/隐藏新的 <div>?

php - 如何在 PHP 中限制文件上传大小?

javascript - 用回车符替换字符 - JavaScript

javascript - 在 AngularJs Web 应用程序中存储以前的 URL

javascript - 对于以逗号分隔的字母数字标签?

Mysql查找替换为字符<,=,",>