确定字符串是否通过jQuery编码HTML?

我正在研究validation脚本,但我遇到了一个非常特殊的问题。

如果用户输入恰好是编码的html字符的字符串(例如&& ),它将作为字符输出(在这种情况下)。 我的问题是:是否有可能编写一个函数来确定字符串是否是编码字符? 因此,如果用户输入上述两个选项之一,我想启动一个特定的function,如果它是一个非编码字符,我想做其他事情。

有没有办法做到这一点?

根据定义,如果您不知道某些东西是否是编码的HTML实体,则您不知道。 您可以将来自特定来源的所有文本视为已编码或未编码。 为什么? 因为它只是文字。 “&安培;” 只是文字。 我打算写“&” 这里。 我不希望任何人解释它,我希望它在字面上显示为“&”。

你怎么知道用户的意思? 如果您开始根据猜测替换用户输入的文本,在某些情况下您将始终将其搞砸。 这是典型的情况,所有“:D”都被图形笑脸取代,当你真正想要输入“:D”时这很烦人。

如果您希望始终准确保留用户输入的内容,请始终通过HTML编码function运行所有用户输入,该function将所有特殊字符替换为实体。 请参阅Great Escapism(或者:您需要知道如何处理文本中的文本) 。

像这样的东西会做到这一点。

 function containsEncoded (val){ var rHTMLEncoded = /&[^\s]*/; return rHTMLEncoded.test(val) ; } // Usage var encoded = containsEncoded("&"); 

您可以通过比较编码长度和解码长度来检查字符串是否包含编码字符:

 var string = "Your encoded & decoded string here" function decode(str){ return decodeURIComponent(str).replace(/</g,'<').replace(/>/g,'>'); } if(string.length == decode(string).length){ // The string does not contain any encoded html. }else{ // The string contains encoded html. } 

此外,这比建议的jQuery方法快得多。