Javascript regex用链接替换一些单词,但不在现有的链接中
javascript regex replace some words with links, but not within existing links
试图将HTML页面中的某些单词替换为相同的单词,但作为链接到该资源的URL。例如,将单词'MySQL'替换为<a href="http://mysql.com">MySQL</a>
使用JS的replace函数与regex,它做的替换很好。
但它也取代了已经是url一部分的单词…这就是问题所在。
对于MySQL的例子,它正在替换已经链接的"MySQL"文本,以及指向mysql.com的URL,因此打破了已经存在的链接。
是否有一种方法来更新内联正则表达式(在.replace调用)不做替换在现有的链接,即元素?
下面是替换代码:
var NewHTML = OriginalHTML
.replace(/'bJavaScript'b/gi, "<a href='"http://js.com/'">$&</a>")
.replace(/'bMySQL'b/gi, "<a href='"http://www.mysql.com/'">$&</a>")
;
下面是完整的示例代码(试图将其内联粘贴,但反引号看起来不正确):http://pastie.org/private/v4l2s2c42aqduqlopurpw
通过JS regexp参考(这里),并尝试了各种其他的排列在regex匹配,像下面,但所有这一切都使它不匹配页面上的任何单词….replace(/'b('<a'>*!'>)JavaScript'b/i,xxxxx
下面的正则表达式确实防止匹配发生在单词字面上碰到斜杠或破折号的地方…但这不是解决方案(它并没有修复上面的mysql示例):
.replace(/'b(?!'>)(?!'-)(?!'/)MySQL'b(?!'-)(?!'/)/gi, "<a href='"http://www.mysql.com/'">$&</a>")`
我已经在stackoverflow和其他地方阅读了相关的线程,但似乎找不到这个特殊的场景,无论如何不是在JavaScript中。
任何帮助都将非常感激。: -)
谢谢!
您可以更改正则表达式以排除结束锚标记之前的关键字,</a>
:
.replace(/'bMySQL'b(?![^<]*?<'/a>)/gi, "<a href='"http://www.mysql.com/'">$&</a>")
一个否定的前瞻应该足够了:
.replace(/'bMySQL(?!'.com)'b/gi, "<a href='"http://www.mysql.com/'">$&</a>")
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 使用JavaScript添加单词样式,但避免链接
- 如何根据链接中包含的字母/单词查找并单击链接
- JQuery在链接的静态页面中搜索,突出显示找到的单词,而不破坏列表
- 在单词的顺序中:“Word1,Word2,Word3”:如何在“Word1”和“Word3”上拥有1个和只有1个超链接?
- 找到包含单词的特定链接并添加到数组中
- Jquery 将单词更改为类型链接
- 将列表中每个单词的第一个出现替换为链接
- 为逗号分隔的单词生成搜索链接
- JS:用另一个单词替换链接.嵌套引号+转义码
- 如何通过JS或PHP在文本中添加特定单词的链接
- Extjs在单个单词上显示链接
- 如何删除链接中单词之间的空格
- 如何使链接工作,只有当在文本字段中键入正确的单词时
- 如何通过链接证明页面中的单词(句子)
- 我如何从文本中取出一个单词并使其成为链接?
- 为句子中空间分离的单词创建单个链接
- 当不同的链接包含相同的单词时,将单词替换为链接
- Javascript regex用链接替换一些单词,但不在现有的链接中