首页
关于
留言
友联
壁纸
统计
Search
1
python 爬虫
17 阅读
2
js前端密码校验
17 阅读
3
python Django增删改查 快速体验
14 阅读
4
VUE codemirror插件 设置回显对象
13 阅读
5
nas内网穿透
12 阅读
默认分类
前端
后端
其他
登录
Search
标签搜索
python
React
Django
爬虫
css
2c
累计撰写
19
篇文章
累计收到
12
条评论
首页
栏目
默认分类
前端
后端
其他
页面
关于
留言
友联
壁纸
统计
搜索到
19
篇与
的结果
2022-06-16
js前端密码校验
强密码校验的校验规则长度8-20位必须包含数字必须包含字母可以包含常用特殊字符不能含有4位连续相同的字符(例如:1111, aaaa)不能含有4位连续的字母(例如:Abcd, lmno)不能含有4位连续的数字(例如:1234, 8901)不能含有4位键盘横向方向连续的字母(例如:qwer)不能含有4位键盘斜向方向连续的字符(例如:1qaz)function validPwd (pwd) { let regex = /(?=.*[0-9])(?=.*[a-zA-Z]).{8,20}/ // 字母连续规则 let strReg = /(a(?=b)|b(?=c)|c(?=d)|d(?=e)|e(?=f)|f(?=g)|g(?=h)|h(?=i)|i(?=j)|j(?=k)|k(?=l)|l(?=m)|m(?=n)|n(?=o)|o(?=p)|p(?=q)|q(?=r)|r(?=s)|s(?=t)|t(?=u)|u(?=v)|v(?=w)|w(?=x)|x(?=y)|y(?=z)|z(?=a)){3}[a-z]/i // 数字连续规则 let numReg = /(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){3}\d/ // 键盘字母横向连续规则 let keyboardHorizontalReg = /(q(?=w)|w(?=e)|e(?=r)|r(?=t)|t(?=y)|y(?=u)|u(?=i)|i(?=o)|o(?=p)|p(?=q) |a(?=s)|s(?=d)|d(?=f)|f(?=g)|g(?=h)|h(?=j)|j(?=k)|k(?=l)|l(?=a) | z(?=x)|x(?=c)|c(?=v)|v(?=b)|b(?=n)|n(?=m)|m(?=z)){3}[a-z]/i // 多个相同字母、数字规则 let sameReg = /(\w)\1{3}/i /** * 键盘斜线的4个字符是否在pwd里面 */ function isStrInSlope(pwd){ let keyboardSlopeArr = ["1qaz", "2wsx", "3edc", "4rfv", "5tgb", "6yhn", "7ujm", "8ik,","9ol.", "0p;/", "=[;.", "-pl,", "0okm", "9ijn", "8uhb", "7ygv", "6tfc", "5rdx", "4esz"] return keyboardSlopeArr.some(v => pwd.toLowerCase().indexOf(v) > -1) } if (regex.test(pwd)){ if (sameReg.test(pwd)) { return '密码不能含有连续4位相同的数字或字母' } else if (strReg.test(pwd)){ return '密码不能含有4位连续的字母' } else if (numReg.test(pwd)){ return '密码不能含有4位连续的数字' } else if (keyboardHorizontalReg.test(pwd)){ return '密码不能含有4位键盘横向方向连续的字母' } else if (isStrInSlope(pwd)){ return '密码不能含有4位键盘斜向方向连续的字符' } return '' } return '您的密码复杂度太低(密码中必须包含字母、数字、特殊字符),请重新设置密码' } 字母数字不重复3次 var arr = str.split(""); var flag = true; for (var i = 1; i < arr.length - 1; i++) { var firstIndex = arr[i - 1].charCodeAt(); var secondIndex = arr[i].charCodeAt(); var thirdIndex = arr[i + 1].charCodeAt(); thirdIndex - secondIndex == 1; secondIndex - firstIndex == 1; if (thirdIndex - secondIndex == 1 && secondIndex - firstIndex == 1) { flag = false; } } if (!flag) { console.log("不能输入连续字符", str); console.log(flag, "flag"); return flag; } return flag;包含数字 字母 包含某一字符 10位 "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\@]).{10,}$"原文章 原文章
2022年06月16日
17 阅读
2 评论
0 点赞
2022-06-09
js标准时间转换
转换成2022-06-09 00:00:00这种formatDateTime(e) { var date = new Date(e); var y = date.getFullYear(); var m = date.getMonth() + 1; //返回值(0~11) m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); minute = minute < 10 ? ('0' + minute) : minute; var second = date.getSeconds(); second = second < 10 ? ('0' + second) : second; return y + '-' + m + '-' + d +' '+ h + ':' + minute + ':' + second; }原文章
2022年06月09日
5 阅读
0 评论
0 点赞
2022-05-23
Vue 和element的实现table表格数据的模糊匹配搜索
<template> <div class="dormitory"> <div class="searchWord"> <div style="display: inline-block"> 搜索:</div> <el-input v-model="search" style="display: inline-block;width: 1300px" placeholder="请输入搜索内容"> </el-input> </div> // 遍历表格 <div class="dormitoryData"> <el-table ref="dormitoryTable" :data="tables" tooltip-effect="dark" stripe style="width: 100%"> <el-table-column type="selection" width="45"></el-table-column> <el-table-column label="序号" type="index" width="65"></el-table-column> <el-table-column label="人物" prop="people"> </el-table-column> <el-table-column label="关系" prop="relationship"> </el-table-column> <el-table-column label="初见" prop="meet"> </el-table-column> <el-table-column label="地点" prop="place"> </el-table-column> <el-table-column label="昵称" prop="execg"> </el-table-column> <el-table-column label="认识年限" prop="year"> </el-table-column> <el-table-column label="成名之做" prop="works"> </el-table-column> </el-table> </div> </div> </template> <script> export default { data () { return { dormitory: [{ people: '雷森', relationship: '大学室友', meet: '2010-09-02', place: '图书馆', execg: '胖子', year: '8年', works: '海阔天空' }, { people: '刘利伟', relationship: '大学室友', meet: '2010-09-02', place: '5#633', execg: '老大', year: '8年', works: '勇气' }, { people: '李金龙', relationship: '大学室友', meet: '2010-09-02', place: '5#633', execg: '二哥', year: '8年', works: '碰见' }, { people: '马康', relationship: '大学室友', meet: '2010-09-02', place: '餐饮大厦', execg: '康哥', year: '8年', works: '再也不联系' }, { people: '牛光卫', relationship: '大学室友', meet: '2010-09-02', place: '图书馆', execg: '牛牛娃', year: '8年', works: '断点' }, { people: '陆兆攀', relationship: '大学室友', meet: '1991-07-27', place: '百浪', execg: '帅哥', year: '27年', works: '再也不犹豫' }, { people: '小甜', relationship: '亲密的人', meet: '2016-10-05', place: '小寨', execg: '甜甜圈', year: '2年', works: 'Forever Love' }], search: '' } }, computed: { // 模糊搜索 tables () { const search = this.search if (search) { // filter() 方法建立一个新的数组,新数组中的元素是经过检查指定数组中符合条件的全部元素。 // 注意: filter() 不会对空数组进行检测。 // 注意: filter() 不会改变原始数组。 return this.dormitory.filter(data => { // some() 方法用于检测数组中的元素是否知足指定条件; // some() 方法会依次执行数组的每一个元素: // 若是有一个元素知足条件,则表达式返回true , 剩余的元素不会再执行检测; // 若是没有知足条件的元素,则返回false。 // 注意: some() 不会对空数组进行检测。 // 注意: some() 不会改变原始数组。 return Object.keys(data).some(key => { // indexOf() 返回某个指定的字符在某个字符串中首次出现的位置,若是没有找到就返回-1; // 该方法对大小写敏感!因此以前须要toLowerCase()方法将全部查询到内容变为小写。 return String(data[key]).toLowerCase().indexOf(search) > -1 }) }) } return this.dormitory } }, methods: { } } </script>
2022年05月23日
6 阅读
0 评论
0 点赞
2022-05-23
vue 动态列筛选
实现代码:HTML部分就是用一个多选框组件展示列选项用v-if="colData[i].istrue"控制显示隐藏,把列选项传到checkbox里再绑定勾选事件。<el-popover placement="right" title="列筛选" trigger="click" width="420"> <el-checkbox-group v-model="checkedColumns" size="mini"> <el-checkbox v-for="item in checkBoxGroup" :key="item" :label="item" :value="item"></el-checkbox> </el-checkbox-group> <el-button slot="reference" type="primary" size="small" plain><i class="el-icon-arrow-down el-icon-menu" />列表项展示筛选</el-button> </el-popover><el-table :data="attendanceList" @sort-change="sort" highlight-current-row :row-class-name="holidayRow" @selection-change="editAll" ref="multipleTable"> <el-table-column type="selection" width="55" align="center"></el-table-column> <el-table-column label="员工基本信息"> <el-table-column v-if="colData[0].istrue" align="center" prop="user_id" label="工号" width="80" fixed></el-table-column> <el-table-column v-if="colData[1].istrue" align="center" prop="name" label="姓名" width="80" fixed></el-table-column> <el-table-column v-if="colData[2].istrue" align="center" prop="age" label="年龄" width="60"></el-table-column> <el-table-column v-if="colData[3].istrue" align="center" prop="gender" label="性别" width="80"></el-table-column> <el-table-column v-if="colData[4].istrue" align="center" prop="department" label="部门名称" width="100"></el-table-column> </el-table-column> </el-table>js 数据存放的data部分//列表动态隐藏 colData: [ { title: "工号", istrue: true }, { title: "姓名", istrue: true }, { title: "年龄", istrue: true }, { title: "性别", istrue: true }, { title: "部门名称", istrue: true }, ], checkBoxGroup: [], checkedColumns: [],js 方法实现部分created() { // 列筛选 this.colData.forEach((item, index) => { this.checkBoxGroup.push(item.title); this.checkedColumns.push(item.title); }) this.checkedColumns = this.checkedColumns let UnData = localStorage.getItem(this.colTable) UnData = JSON.parse(UnData) if (UnData != null) { this.checkedColumns = this.checkedColumns.filter((item) => { return !UnData.includes(item) }) } }, // 监控列隐藏 watch: { checkedColumns(val,value) { let arr = this.checkBoxGroup.filter(i => !val.includes(i)); // 未选中 localStorage.setItem(this.colTable, JSON.stringify(arr)) this.colData.filter(i => { if (arr.indexOf(i.title) != -1) { i.istrue = false; } else { i.istrue = true; } }); } },
2022年05月23日
4 阅读
0 评论
0 点赞
2022-05-19
js通过id pid 遍历集合获得树结构
node=[{id:1,pid:0,name:"吉林省"}, {id:2,pid:1,name:"长春市"}, {id:3,pid:1,name:"松原市"}, {id:4,pid:0,name:"辽宁省"}, {id:5,pid:4,name:"沈阳市"}, {id:6,pid:3,name:"扶余县"} ] /* 通过定义map,key当前对象id, value该对象 遍历集合,得到对象顶级节点放到集合中返回 不是顶级的就是当前对象的子节点,将对象放到该节点下,这一段比较抽象 */ function toTree(node){ node.forEach(function(it){ delete it.children; }) // 定义map/ var map = {}; // 这里可以重构数据类型,放回字段值 node.forEach(function(it){ map[it.id]=it; }) // 定义返回集合 var val=[]; node.forEach(function(it){ var parent = map[it.pid]; if(parent){ // 有数据说明不是顶级节点,将数据放到该 children 子节点下 ((parent.children) || (parent.children=[])).push(it); }else{ // 没有数据说明是顶级节点放到val中 val.push(it); } }); return val; } console.log(JSON.stringify(toTree(node)))`` 原文章
2022年05月19日
10 阅读
0 评论
0 点赞
1
2
3
4