Javascript 如何使以AB开头的单词可以点击?

Javascript 如何使以AB开头的单词可以点击?,javascript,jquery,greasemonkey,Javascript,Jquery,Greasemonkey,以下是一些基本的HTML: <p>Here is a reference: AB-AAA111</p> <p>Here is a reference: AB-BBB222</p> <p>Here is a reference: AB-CCC333, AB-DDD444</p> <p>Here is a reference: AB-EEE555</p> 这里有一个参考:AB-AAA111 这里有一个参

以下是一些基本的HTML:

<p>Here is a reference: AB-AAA111</p>
<p>Here is a reference: AB-BBB222</p>
<p>Here is a reference: AB-CCC333, AB-DDD444</p>
<p>Here is a reference: AB-EEE555</p>
这里有一个参考:AB-AAA111

这里有一个参考:AB-BBB222

以下是参考资料:AB-CCC333,AB-DDD444

这里有一个参考:AB-EEE555

如您所见,每个段落都包含一个以AB开头的引用-

最终目标:在Geasemonkey中使用JS/jQuery,使每个AB引用都可以单击。例如:

<p>Here is a reference: <a href="localhost/AAA111"> AB-AAA111 </a> </p>
这里有一个参考:

我知道如何使用正则表达式来挑选以AB-/AB-\w+/gi开头的单词,并且知道如何分配变量和替换字符串的特定部分


我搞不懂的是,在这种情况下,如何把它们缝合在一起

您实际上不需要使用正则表达式

inputs = document.getElementsByTagName('p');

for(var i = 0; i < inputs.length; i++) {
  var p = inputs[i].innerHTML.substring(21);

  if(p.startsWith("AB")) {
    inputs[i].innerHTML = "<a href='*'>" + p;
    inputs[i].innerHTML += "</a>";
  }
}
看看它是否从那个序列开始

我相信可能有一个更详细的解决方案来添加标签到这些项目,但这是简单和有效的


希望这有帮助,干杯如果你真的想用一个简单的正则表达式,你可以用这个:

document.body.innerHTML = document.body.innerHTML
  .replace(/\bAB-(\w+)/g, '<a href="http://localhost/$1">$&</a>');

这将为您提供可由
节点迭代的节点列表。iterateNext()
。缺点是,像
AB-123
这样的超文本解析变得非常困难。

它们都有一个连字符作为通用字符。它可以很容易地做爆炸字符串,只是抓住后面的连字符的一切。
document.body.innerHTML = document.body.innerHTML
  .replace(/\bAB-(\w+)/g, '<a href="http://localhost/$1">$&</a>');
let nodes = document.evaluate('//text()[contains(.,"AB-")]', document,
  null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);