-1

基本的に私はこのようなものを持っています:

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

私がやりたいことは、データがこれと一致しない場合です:

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

ユーザーに警告したい。これどうやってするの?ありがとうございました..

質問を編集しますが、十分に明確ではなかったと思います..

データ変数はどこかから読み取られます。それは重要ではない。ボタンがクリックされると、この関数が呼び出されます。データ変数 (これは string です) は次のようなもののみです:

<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

RegEx の代わりに、ブラウザの HTML 解析機能を使用してください。指定された文字列をいくつかの要素として設定し、.innerHTMLDOM 関数を使用して子をチェックするだけです。

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 に答える