我的问题是基于SO question How to encode a string in JavaScript for displaying in HTML?
的精彩答案function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
我需要相同但应该在字符串中保留每个"<br>"
子字符串。寻找修改函数htmlEntities
的最佳方法。
谢谢。
答案 0 :(得分:0)
比我的解决方案更聪明吗?
function htmlEntitiesModified(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace('<br>', '<br>');
}
//.replace('<br>', '<br>') was added to the end.
如果这个解决方案优雅且足够好,请投票,以便我知道。谢谢。
答案 1 :(得分:0)
尝试
function htmlEntities(str) {
return String(str)
.replace(/&/g, '&')
.replace(/<[^<br]/g, '<') // negate `<br`
.replace(/[^br+| \/>]>/g, '>') // negate `br>` or `br />`
.replace(/"/g, '"');
}
var unsafestring = "<br><oohlook&atme><br><br />string";
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/<[^<br]/g, '<').replace(/[^br+| \/>]>/g, '>').replace(/"/g, '"');
}
document.body.innerText = htmlEntities(unsafestring);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 2 :(得分:0)
我很惊讶没有人回答这个问题。您可以自己使用浏览器为您进行转义。没有正则表达式比让浏览器做最好的事情更好或更安全,处理HTML。
function escapeHTML(str){
return new Option(str).innerHTML;
}
或使用Option()构造函数的简短替代
function beginfunction() {
var CarType = document.forms["Cars"]["CarType"].value;
var CarNumber = document.forms["Cars"]["CarNumber"].value;
var CarPrice;
var message = "";
if ( !( CarType == 'A' || CarType == 'B' || CarType == 'C' ) ) {
message = "Invalid Car Type";
}else{
if (CarType == 'A') {
CarPrice = 30;
} else if (CarType == 'B') {
CarPrice = 20;
} else if (CarType == 'C'){
CarPrice = 10;
}
message = CarPrice;
}
if (isNaN(CarNumber)) {
message = "Invalid Quantity Entered";
}
if (CarNumber >0 && CarNumber <10)
{
}
else{
message = "Invalid";
}
document.getElementById('message').innerHTML = message;
return false;
}