正则表达式 jquery 将数字替换为链接

regex jquery to replace number with link

本文关键字:链接 替换 数字 jquery 正则表达式      更新时间:2023-09-26

我有一个数据库结果页面,用户偶尔会输入对另一篇文章的引用。 (数据库是调度办公室的日间事件跟踪器)。

对其他帖子的引用始终是帖子 ID(001234 格式)。我们使用这些来将事件与卡车司机的案卷和其他文书工作相匹配。它本身始终是一个 6 位数字。

<div class="eventsWrapper">
 Data from DB is output here using PHP in a foreach loop.
 Presents data in similar fashion to facebook for example.
</div>

我需要做的是一旦加载了上述 DIV 中的数据,然后遍历并将每个完整的 6 位数字(不是数字的一部分)替换为数字作为超链接。

重要的是,它只查找两侧都有空格的数字:

EG: Ref 001122 <- like this - not like this -> ignore AB001122

一旦我有了超链接标签,我就可以使参考编号可点击,将用户直接带到该帖子。

我对正则表达式不是那么好,但认为它是这样的:

'b(![0-9])?'d{6}'b

我不知道如何搜索 DIV,然后用超链接替换该正则表达式。感谢任何帮助。

(?:^| )'d{6}(?= |$)

您可以使用它并替换为 <space><whateveryouwant> .请参阅演示。

https://regex101.com/r/bW3aR1/7

'b行不通,因为A1不是您想要的word boundary

像这样的东西? 制作单个帖子的数组并循环访问。 如果帖子中只有一个 ID,则可以不使用第二个循环。

var str = ['Ref 001122 <- like this - not like this -> ignore AB001122', 'Ref 001123 <- like this - not like this -> ignore AB001122', 'Ref 001124 <- like this - not like this -> ignore AB001122'];
var regex = /'b'd{6}'b/g;
for (var j = 0; j < str.length; j++) {
  var urls = str[j].match(regex);
  for (var i = 0; i < urls.length; i++) {
    var url = urls[i];
    newString = str[j].replace('' + urls[i] + '', '<a href = ' + url + '>' + urls[i] + '</a>')
  }
  $('#output').append(newString);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="output"></div>