下面的正则表达式应该替换div中的所有标记。但是,在Chrome中,字符串按预期返回"123",而在Firefox中则返回">123'。
<html>
<body>
<div><img src="" alt="Test >"> 123</div>
<script type="text/javascript">
var string = document.getElementsByTagName('div')[0].innerHTML;
string = String(string).replace(/(<([^>]+)>)/,"");
console.log('String: ' + string);
</script>
</body>
</html>
http://jsfiddle.net/xvdYb/
我知道是"大于"的实体让Firefox的行为有所不同,但为什么它们一开始会产生不同的结果?
对于此类任务,您应该永远不要使用regex。相反,使用JavaScriptDOM功能:
document.getElementsByTagName('div')[0].textContent.trim()