在下面的代码中,使用正则表达式,我们如何搜索和替换" ="在<>中找不到用":"
'ABC=<ATTR1 TEST="11">VALUE1</ATTR1>'
答案 0 :(得分:0)
这不是真正的正则表达式的设计,但是......
(?<!<[^>]*)=(?![^<]*>)
与正则表达式差不多(如果你的味道支持负向前瞻和后瞻)。但是,我不相信Javascript会这样做,这意味着您应该使用比正则表达式引擎更具体的解析器。
答案 1 :(得分:0)
如果您正在寻找跨浏览器解决方案(lookbehind是不行)
<>
与正则表达式之间的所有文本存储到数组=
替换<>
或者你可以在{javascript中split().reverse()
字符串,然后使用lookahead绕过没有lookbehind支持。 This文章还提供了一些替代解决方案,以支持支持。
答案 2 :(得分:0)
您不应使用正则表达式解析HTML ,而应使用解析器。请参阅mu的评论。
如果您只有这些类型的标记,并且该文字不包含未转义的<
或>
:
var str = 'ABC=<ATTR1 TEST="11">VALUE1</ATTR1>'+"\n"
+ 'foo = bar <foo x="5 > 3 = true" y=\'fo> = \'> === </foo=>';
str = str.replace(/(?:=|(<(?:[^"'<>]+|"[^"]*"|'[^']*')*>))/g, function(m,tag){
return tag ? tag : ':';
});
结果:
ABC:<ATTR1 TEST="11">VALUE1</ATTR1>
foo : bar <foo x="5 > 3 = true" y='fo> = '> ::: </foo=>
的示例
我写这篇文章只是为了好玩,我没有想到所有案例,只是一个概念证明。