aBelow,我试图通过使用正则表达式定义密钥来访问HTML实体值,该值存储在对象中,如下所示。但是,我得到了蝙蝠侠未定义的罗宾"而不是"蝙蝠侠&罗宾&#34 ;.有人可以向我解释为什么我得到了未定义而不是对象的键值属性?谢谢!
function convertHtmlEntities ( str ) {
// Object containing all the key value pair of HTML entities.
var htmlEntities = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
// Regular expression for replacing the items mentioned above with the
// appropriate HTML entities.
console.log( str.replace( /([\&\<\>\"\'])+/, htmlEntities['$1'] ) );
return str.replace( /([\&\<\>\"\'])+/, "$1" );
}
convertHtmlEntities("Batman & Robin"); // Should return "Batman & Robin"
答案 0 :(得分:2)
您可以将功能传递给String.replace()
:
str.replace( /([\&\<\>\"\'])+/, function(match){
return htmlEntities[match];
});
答案 1 :(得分:1)
您可以尝试:
str.replace( /([\&\<\>\"\'])+/, htmlEntities[RegExp.$1]
这将返回(至少对我而言):
"Batman & Robin"
此外,请注意这是deprecated,其功能可能会被浏览器删除。