搜索(某些)标签的特定名称并转换为链接

时间:2012-07-23 12:56:05

标签: javascript html

我正在为我的网站写一些javascript。

我希望能够将(使用javascript)特定名称转换为链接。

例如,鉴于本杰明的名字,它将转向:

Hello my name is Benjamin

Hello my name is <a href='something'>Benjamin</a>

诀窍是,我不知道我需要提前转换的名称,我在ajax响应中收到这些名称。此外,我需要能够处理

的内容
<b>B</b>enjam<b>in</b>

虽然没有触及像

这样的东西
B<br />enja<br />min

我想知道设计能够进行这种解析的东西的最佳实践。如果有一个现成的解决方案可能会更好。

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

将此应用于您的文字:

.replace(new RegExp("Benjamin".split('').join(".*?"),"g"),'<a href="#">$&</a>')
                  //    ^------------------------ word to be replaced

Live demo

答案 1 :(得分:0)

此正则表达式匹配所有这些名称, 这样:

var str1 = "Hello Im Benjamin";
var str2 = "Hello Im <b>Benjamin</b>";
var str3 = "Hello Im <b>Benj<b>amin</b></b>"
var str4 = "Hello Im <br>Benjamin< />"    

console.log(str1.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" Benjamin"] 
console.log(str2.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" <b>Benjamin</b>"] 
console.log(str3.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" <b>Benj<b>amin</b></b>"] 
console.log(str4.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //null
​

Fiddle