前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >表单校验实战

表单校验实战

作者头像
grain先森
发布2019-03-28 17:33:21
8640
发布2019-03-28 17:33:21
举报
文章被收录于专栏:grain先森

前端的表单验证肯定会经常遇到,特别是做报表系统、后台管理系统等项目的时候,必然会涉及到。当然前端表单验证的插件很多,而且可配置性很高,使用起来也是得心应手,比如vee-validate、validate.js 当然这类插件很多我就不一一列举了,亲们可以自行百度。

我这里是想分享一下我拿到需求后通过原生js的处理方案,如有碰到类似需求的小伙伴可以借鉴一下,不足之处欢迎到公众号留言,我会积极改正。

哈哈,欣赏完美图后就上干货了,坐稳了~

需求分析

表单中有一个关键字的字段,字段要求如下

        1、关键字不可以重复;

        2、关键字不允许包含符号和emoji;

        3、关键字之间以逗号隔开;

        4、过滤空的关键字。

代码实现

// 校验关键字字段

        function checkKeywords (keywords) {

            // 过滤除逗号以外的特殊符号

            let symbolPattern = /[\ |\~|\`|\!|\!|\@|\#|\¥|\$|\%|\^|\&|\*|\(|\)|\(|\)|\——|\—|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\||\、|\;|\;|\:|\:|\“|\”|\"|\‘|\’|\'|\《|\<|\。|\.|\》|\>|\?|\/|\?]/ig;

            if (symbolPattern.test(keywords)) {

                alert('关键字不允许使用特殊符号');

                // keywords = keywords.replace(symbolPattern,'');

                return false;

            }

            // 过滤表情

            let ranges = ['\ud83c[\udf00-\udfff]', '\ud83d[\udc00-\ude4f]', '\ud83d[\ude80-\udeff]'];

            let emojiPattern = new RegExp(ranges.join('|'), 'ig');

            if (emojiPattern.test(keywords)) {

                alert('关键字不允许使用表情');

                // keywords = keywords.replace(emojiPattern, '');

                return false;

            }

            // 中文逗号转英文逗号

            let dotPattern = /,/ig;

            if (dotPattern.test(keywords)) {

                keywords = keywords.replace(dotPattern, ',');

            }

            // 过滤重复字段

            let keywordsArr = keywords.split(',');

            if (this.isRepeat(keywordsArr)){

                alert('关键字不允许重复');

                // keywords = Array.from(new Set(keywordsArr)).join(",");

                return false;

            }

            // 过滤空的关键字

            keywords = keywordsArr.filter(item => item !== '').join(',');

            return keywords;

        }

// 判断数组是否重复

        function isRepeat (arr) {

            var hash = {};

            for(let i in arr) {

                if(hash[arr[i]]){

                    return true;

                }

                hash[arr[i]] = true;

            }

            return false;

        }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求分析
  • 代码实现
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档