Javascript中的字符串比较

时间:2014-04-17 10:07:20

标签: javascript string

我有一个跟随字符串数组

["div", "span", "h1", "h2", "h3", "h4", "h5", "p", "br", "a", "strong", "em", "li", "ul", "ol", "b", "i", "u", "hr", "font", "pre", "q", "s", "strike", "blockquote", "sub", "sup"]

我有一个字符串文本,其中也包含HTML标记,我需要验证段落文本中的html标记是否超出了上面字符串数组中定义的标记。除了这些,如果存在任何标签,则必须抛出错误。我看到了很多方法,但无法找到这些方法的简单javascript实现。

2 个答案:

答案 0 :(得分:1)

您需要解析HTML,然后测试所有标记以查看它们是否在数组中匹配。我只是解析HTML,遍历DOM节点并针对数组测试每个标记名:

var allowedTags = ["div", "span", "h1", "h2", "h3", "h4", "h5", "p", "br", "a", "strong", "em", "li", "ul", "ol", "b", "i", "u", "hr", "font", "pre", "q", "s", "strike", "blockquote", "sub", "sup"];
var wrapper = document.createElement("div");
wrapper.innerHTML = "<h1>Your HTML here</h1><p>Test</p><span><audio /></span>";
function walk(element) {
    var el = element;
    var len = el.childNodes.length, i;
    for(i = 0; i<len; i++) {
        if(!walk(el.childNodes[i])) return false;
    }
    return !(el.tagName && allowedTags.indexOf(el.tagName.toLowerCase()) === -1);
}
var result = !walk(wrapper);
console.log("Contains invalid tags: " + result);

jsFiddle

答案 1 :(得分:0)

您必须从字符串中解析标记,然后检查数组的标记名称;这在this question中讨论过。解析字符串的方式取决于您的环境,但主题在this question中讨论。