【问题标题】:Replace and substitution of texts替换和替换文本
【发布时间】:2019-07-25 23:50:54
【问题描述】:
In an HTML page, replace the text micro with &micro; and don't screw up the code: don't replace inside <the tags> or &entities;

我想从左到右替换列表。

micro    &micro; 
micro;   &micro;;
micro>   &micro;>

我的代码可以匹配micromicro&gt;micro;&amp;micro;

(micro)(?![^;&< ]*;[;>]) 

或仅匹配micro micro&gt;

(micro)(?![^;&< ]*;) 

但我只想匹配 micro micro&gt; micro; 而没有 &amp;micro;

这并不像我想象的那么简单。

正则表达式demo

替换

&micro;

参考

Regex replace text outside html tags

【问题讨论】:

    标签: regex


    【解决方案1】:

    (?&lt;!&amp;)(micro) 适用于给定的示例。

    【讨论】:

      【解决方案2】:

      试试这个正则表达式:

      (?<!&)(micro[^A-Za-z0-9])
      

      工作演示:https://regex101.com/r/pxALtw/1/

      【讨论】:

        【解决方案3】:

        使用给定的正则表达式可以做的最简单的事情是检查替换的回调函数。

        let str = `micro    &micro; 
        micro;   &micro;;
        micro>   &micro;>`
        
        let op = str.replace(/(&?micro)(?![^;&< ]*;[;>])/g, function(match,g1) {
          if( g1.startsWith('&') ) {
            return `${g1};`
          } else {
            return `&${g1};`
          }
        })
        
        console.log(op)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-22
          • 2018-10-17
          • 2018-01-06
          • 2012-08-22
          • 2011-09-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多