0
<input type="text" id="NotesReturn" />
<script type="text/javascript">
    $("#NotesReturn").keypress(function (e) {
         kCode = e.keyCode || e.charCode
         var htmlRegExp=new RegExp("/<(\w+)((?:\s+\w+(?:\s*=\s*(??:'[^']*')|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/");
         if (htmlRegExp.test(kCode) || $(this).val().length >= 512)
            e.preventDefault();
    });

    $("#NotesReturn").bind('paste', function(e){
         var pastedValue=this.value+window.clipboardData.getData('Text');
         var trimmedValue=pastedValue.substring(0, 512);
         var htmlRegExp = new RegExp("/<(\w+)((?:\s+\w+(?:\s*=\s*(??:'[^']*')|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/");
         if(!htmlRegExp.test(trimmedValue))
         {
             $(this).val(null);
             $(this).val(trimmedValue.toString());
         }
         e.preventDefault();
    });

</script>

我的文本框不应该允许 html 数据。但它抛出了意外的量词错误。有人可以帮助我。我无法弄清楚错误。

4

1 回答 1

1

意外的量词错误是由于??in (??:which 可能只是(?:表示非捕获组。
正如 Barmer 所说,不应该包括开始和结束的正斜杠,并且圆括号是不平衡的。您需要删除右圆括号或添加另一个左圆括号。
使用 RegExp 构造函数时,您还需要通过在它们前面加上反斜杠来转义反斜杠。
执行上述操作将为您提供有效的正则表达式,但它是否可以正常工作以禁止 html 是另一个问题。

于 2013-01-08T15:57:35.760 回答