textbox不应该允许使用正则表达式的html数据

时间:2013-01-08 02:23:43

标签: javascript regex

<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数据。但它会抛出意想不到的量词错误。有人帮助我。我无法弄清楚错误。

1 个答案:

答案 0 :(得分:1)

意外的量词错误是由??中的(??:引起的,(?:可能只是{{1}}来指示非捕获组。
正如Barmer所说,不应包括开启和关闭正斜杠,圆括号不平衡。您需要移除右圆括号或添加另一个左圆括号 使用RegExp构造函数时,还需要使用反斜杠来转义反斜杠 执行上述操作将为您提供有效的正则表达式,但它是否能正常工作以禁止html是另一个问题。