浏览器在输入特殊字符时会挂起/冻结



我允许英语和其他语言的unicode一起输入文本框和受限制的特殊字符,但是当我输入特殊字符时,浏览器会冻结和无响应,在英语和卡纳达语使用的组合正则表达式下面。

<asp:RegularExpressionValidator ID="regExpRemarks" runat="server" CssClass="valdn-color" ControlToValidate="txtRemarks" ErrorMessage="Only Alphabets, Numbers and Special Characters like - . / , : () are allowed in Remarks"
SetFocusOnError="true" Display="Dynamic" ValidationGroup="KSEI_LP"  ValidationExpression="^([0-9a-zA-Z-,./(): rnu200Du0C80-u0CFF]+)+$"></asp:RegularExpressionValidator>

这个模式正确吗

ValidationExpression="^([0-9a-zA-Z-,./(): rnu200Du0C80-u0CFF]+)+$" 

我甚至尝试使用Java脚本阻止特殊字符,但它不工作

<script type="text/javascript">
function checkSpcialChar(e) {
alert();
var k = e.keyCode;
if ((k == 39) || (k >= 219 && k <= 222) || (k == 187) || (k == 189)) {
return false;
}
else {
return true;
}
</script>   

如何验证特殊字符和允许提到的字符,帮我出来的家伙!

过滤坏字符可能更有意义。不好的很可能是那些不符合UTF-8的。我假设这是你正在使用的unicode编码,因为其他编码现在很少了。UTF-8字符编码如下,其中x代表unicode码位-point:

0 xxxxxxx110年xxxxx10xxxxxx1110xxxx 10xxxxxx 10xxxxxx1110xxxx 10xxxxxx 10xxxxxx

注意以10开头的字符是非法的。其中一些是在流行的ISO-8859-1标准中定义的,但不是那些在0x80 - 0x9f范围内的。遗憾的是,微软在这个范围内实现了一些符号。左前导双引号(又名"[邪恶]聪明的引号"),0x93是最令人震惊的。我怀疑原因是它映射到XOFF字符(0x13,又名"control ")将MSb设置为1,使其成为0x93。我在一个系统上工作(基于VxWorks),当输入0x93时锁定,解锁它的唯一方法是输入0x91(左前导单引号;XON字符(0x11,又名"控制")将MSb设置为0,使其成为0x91)。同一系统响应正常的XON/XOFF,实际上这两种情况都可以同时设置,在这种情况下,需要两种形式的XON来解锁它。

最新更新