javascript - 正则表达式捕获并替换 html 标签之外的文本模式

标签 javascript jquery html regex

我有一些字符串,例如“de456”“us7515”,它是 de/us 和 3 到 10 位数字。

我希望捕获所有这些内容并用超链接替换它们,除非它们已经位于 html 标记内。

示例:

  1. 应该改变:

    <div> de485 </div> => <div> <a href = "xxx.com/de485">de485</a></div>
    <span> i need us1234 </span> => <span> i need <a href = "xxx.com/us1234"> us1234 </a></span>
    
  2. 不应更改:

    <a href ="github.com/xxxxx/us1234> link </a> => <a href ="github.com/xxxxx/us1234> link </a>
    
  3. 应该部分改变

    <a href ="github.com/xxxxx/us1234> us1234 </a> => <a href ="github.com/xxxxx/us1234> <a href = "xxx.com/us1234"> us1234 </a> </a>
    

我已经写了两个正则表达式:

匹配文本模式:

de456
us1234

/\b(us\d{3,10}|de\d{3,10})\b/ig

匹配打开的 html 标记内的文本模式

<a href = "github.com/de456">

/<\s*\w.*\b(us\d{3,10}|de\d{3,10})\b.?>/ig

所以我可以通过使用 jquery regex exec 和 string.replace 来执行 1 和 2,但我不知道如何执行 3。 请指教。预先非常感谢您。

最佳答案

我试试这个。有需要的请采纳。

(?<![\/])((?:de|us)[0-9]{3,10})

查看演示: http://regex101.com/r/oS0tS3/2

关于javascript - 正则表达式捕获并替换 html 标签之外的文本模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580849/

相关文章:

javascript - 无法读取未定义的属性 'helpers'

javascript - 国外进口新型品种创历史新高

javascript - 如何在 Chrome 开发者工具中调试由 javascript 加载的部分 View 内的脚本?

javascript - 依次淡出 child

html - 在 html5 中将复选框设置为选中状态,我应该简单地使用选中(作为属性)还是选中 ="checked"(作为属性)?

javascript - jquery .toggleClass on click 使用多个 ID

javascript - 如何减少在 html 上渲染数学的延迟?

javascript - 如何在react.js组件中通过表格显示json数据

javascript - 我有函数,但在 firebug 控制台中它说它不是我调用它的函数?

javascript - 单击事件不会在 highcharts 工具提示中触发