Javascript用其他文本替换字符串中的文本

时间:2015-11-06 12:27:53

标签: javascript regex search replace

我正在创建一个需要跨平台的链接系统,即在webapp和移动应用程序上工作。

API返回一个如下所示的字符串,

Go to {P}Project Name{/P}

OR

Go to {F}File Name{/F}

我需要搜索{P}和{F},并将其替换为我的网络应用中的<a href="">,然后搜索{/ P}或{/ F}并将其替换为{ {1}}

我正在尝试使用javascript进行此操作,但我即将解散,这是我到目前为止所拥有的,

</a>

在此之后我解开了我的正则表达式知识不是它应该是什么,有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:2)

一种方式:

str = str.replace(/({[PF]}(.*?){\/[PF]})/g, '<a href="">$2</a>');

Go to <a href="">Project Name</a>

答案 1 :(得分:1)

考虑:

str = "Go to {P}Project Name{/P}"
str = str.replace(/({P}|{F})/, '<a href="">');
str = str.replace(/({\/P}|{\/F})/, '</a>');
alert(str);

See it in action

更短的更新解决方案:

str = "Go to {P}Project Name{/P}"
str = str.replace(/({P}|{F})(.*?)({\/P}|{\/F})/g, '<a href="">$2</a>');
alert(str);

See Updated DEMO

答案 2 :(得分:0)

我建议您在Javascript Kitw3schools查看JS正则表达式。

在您的情况下,您无法使用斜杠(/)打开正则表达式,并且括号({})具有特殊意义在正则表达式上,所以你必须逃脱它。

你的正则表达式应该是/\{[PF]\}(.*?)\{\/[PF]\}/

答案 3 :(得分:0)

您可以使用indexOf(纯JS)来检查您是否可以在字符串中找到{P}或{F}。然后更换它们。

var str = "Go to {P}Project Name{/P}"; //this is just an example, it may contains F
if (str.indexOf("{P}" != -1} {//will return -1 if it doesn't have
    str = str.replace("{P}", "<a href="">");
    str = str.replace("{/P}", "</a>");
} else {
    str = str.replace("{F}", "<a href="">");
    str = str.replace("{/F}", "</a>");
}