In an HTML page, replace the text micro with µ and don't screw up the code: don't replace inside <the tags> or &entities;
我想从左到右替换列表。
micro µ
micro; µ;
micro> µ>
我的代码可以匹配micro
micro>
micro;
µ
(micro)(?![^;&< ]*;[;>])
或仅匹配micro
micro>
(micro)(?![^;&< ]*;)
但是我只想匹配micro
micro>
micro;
而没有µ
这并不像我想的那么简单。
替换
µ
答案 0 :(得分:1)
使用给定的正则表达式最简单的方法就是签入replace的回调函数。
let str = `micro µ
micro; µ;
micro> µ>`
let op = str.replace(/(&?micro)(?![^;&< ]*;[;>])/g, function(match,g1) {
if( g1.startsWith('&') ) {
return `${g1};`
} else {
return `&${g1};`
}
})
console.log(op)
答案 1 :(得分:0)
(?<!&)(micro)
适用于给定的示例。
答案 2 :(得分:0)