码迷,mamicode.com
首页 > Web开发 > 详细

对于网页中用户输入的特殊字符过滤方法

时间:2020-07-14 18:29:42      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:lin   并且   mat   ref   改变   http   function   dir   red   

背景

我们网页中需要用户填写一些信息,因为我们的网页比较特殊,是针对国际的用户,并且支持多种语言,线上发现用户会通过copy的方式填充输入,可能是从word等软件中copy的,带入了一些不可见的字符。

比如\u200B这种零宽度的空格,以及一些看起来像半角空格的,含有这些字符后,会导致信息校验失败

 

解决方法

1.禁止用户copy

https://www.cnblogs.com/3box/p/5711498.html

 

2.限定输入范围,在输入改变时,替换非法字符

$("#inputId").on("keyup change", function () {
            var inputCurr = $(this).val();
            //\p{C}是替换不可见字符
            //\p{Zs}是替换空格为半角空格,全角空格也会被替换成半角空格
            var inputNew = inputCurr.replace(/[\p{C}]/gu, ‘‘).replace(/[\p{Zs}]/gu, ‘ ‘);

            if (inputCurr != inputNew) {
                $(this).val(inputNew);
            }
        });

 

  • 分隔符p{Z}

    • \p{Zs}\p{Space_Separator}:a whitespace character that is invisible, but does take up space.
    • \p{Zl}\p{Line_Separator}:line separator character U+2028.
    • \p{Zp}\p{Paragraph_Separator}:paragraph separator character U+2029.
  • 其它符号\p{C}(包括不可见控制字符与未用码位
    • \p{Cc}\p{Control}ASCIILatin-1控制字符0x00-0x1F0x7F-0x9F
    • \p{Cf}\p{Format}:不可见的格式化指示字符。
    • \p{Co}\p{Private_Use}:私用码位
    • \p{Cs}\p{Surrogate}UTF-16编码的代理对的一半。
    • \p{Cn}\p{Unassigned}:未被使用的码位

 

 

参考资料

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

对于网页中用户输入的特殊字符过滤方法

标签:lin   并且   mat   ref   改变   http   function   dir   red   

原文地址:https://www.cnblogs.com/maochenhua/p/13300158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!