-1

基本上我有这样的事情:

<script>
    function myfunction(){
        var data = CKEDITOR.instances.editable.getData();
        alert(data);
    }
</script>

我想要做的是,如果数据与此不匹配:

<h2>Any text allowed here but only text<h2> 

我想警告用户。我怎样才能做到这一点?谢谢..

我将编辑我的问题,我想这还不够清楚..

从某处读取数据变量。这不重要。单击按钮时,将调用此函数。数据变量(它是一个字符串)只能是这样的:

<h2> ANY TEXT HERE </h2>

所以这些是不允许的:

Anytext
<h1>any text</h1>
<a href=..>

谢谢你。

4

2 回答 2

2

版本 1:

var pattern = /<h2>[^\d]+<\/h2>/;
console.log(pattern.test('<h2>asf</h2>'));

这将阻止任何数字,但只接受普通字母。

版本 2:

var pattern = /<h2>[A-Za-z]+<\/h2>/;
    console.log(pattern.test('<h2>asf</h2>'));

仅在标签之间接受 A-Za-z

版本 3:

   var pattern = /<h2>[^\<\>\/\d]+<\/h2>/;
    console.log(pattern.test('<h2>asf?1.,</h2>'));

这将接受除数字之外的任何内容并防止任何结束标签

于 2013-01-12T10:26:06.240 回答
2

使用浏览器的 HTML 解析功能而不是 RegEx。只需将指定的字符串设置为某个元素,.innerHTML然后使用 DOM 函数检查子元素:

var temp = document.createElement("div");
temp.innerHTML = "<h2>Any text allowed here but only text</h2>";
if (
    temp.childNodes.length == 1 &&            // has only one child
    temp.firstChild.tagName == "H2" &&        // that child is a H2
    temp.firstChild.childNodes.length == 1 && // H2 as only one child
    temp.firstChild.firstChild.nodeType == 3  // that child a Node.TEXT_NODE
) {
    alert("valid");
} else {
    alert("invalid");
}
于 2013-01-12T10:28:21.240 回答