如何确定给定字符串是否为HTML Escaped?

时间:2013-05-27 19:07:06

标签: javascript html string escaping

是否有任何方法可以确定给定的字符串是否为HTML Escaped?

考虑以下javascript代码:

<script>
var str="hello";
var str_esc=escape(str);

document.write(isHTMLEscaped(str)) // *Should print False*

document.write(isHTMLEscaped(str_esc)); // *Should print True*

</script>

在上述情况下,是否存在等同于 isHTMLEscaped 的方法?

2 个答案:

答案 0 :(得分:3)

我发现使用

escape(unescape(str))

将始终提供转义字符串。除非字符串本身包含转义表达式,否则unescape字符串将不执行任何操作。

注意:应该使用encodeURI(decodeURI(str)),因为现在折旧了。

答案 1 :(得分:1)

作为"hello"==escape("hello"),不,你根本无法猜测是否应用了转义。

如果您想知道该字符串是否已被转义,那么您可以测试

var wasProbablyEscaped = /%\d\d/.test(str);
var wasProbablyNotEscaped = !wasProbablyEscaped && /%\d\d/.test(escape(str));

因为转义会在必须转义某些内容时添加%后跟两位数字。但是你不能完全确定,因为当你逃避它们时,某些字符串不会改变。

在你的情况下,如果wasProbablyEscaped成立,我可能会建议你不要逃避。