我正在创建一个需要跨平台的链接系统,即在webapp和移动应用程序上工作。
API返回一个如下所示的字符串,
Go to {P}Project Name{/P}
OR
Go to {F}File Name{/F}
我需要搜索{P}和{F},并将其替换为我的网络应用中的<a href="">
,然后搜索{/ P}或{/ F}并将其替换为{ {1}}
我正在尝试使用javascript进行此操作,但我即将解散,这是我到目前为止所拥有的,
</a>
在此之后我解开了我的正则表达式知识不是它应该是什么,有人能指出我正确的方向吗?
答案 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);
更短的更新解决方案:
str = "Go to {P}Project Name{/P}"
str = str.replace(/({P}|{F})(.*?)({\/P}|{\/F})/g, '<a href="">$2</a>');
alert(str);
答案 2 :(得分:0)
我建议您在Javascript Kit或w3schools查看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>");
}