<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数据。但它会抛出意想不到的量词错误。有人帮助我。我无法弄清楚错误。
答案 0 :(得分:1)
意外的量词错误是由??
中的(??:
引起的,(?:
可能只是{{1}}来指示非捕获组。
正如Barmer所说,不应包括开启和关闭正斜杠,圆括号不平衡。您需要移除右圆括号或添加另一个左圆括号
使用RegExp构造函数时,还需要使用反斜杠来转义反斜杠
执行上述操作将为您提供有效的正则表达式,但它是否能正常工作以禁止html是另一个问题。