Quill -> Markdown (codepen.io)
Vue
React
React-Quill Custom HTML Toolbar (codepen.io)
Real-time collaboration in Quill.js (codepen.io)
TinyMCE
「富文本」从 Quill 到 TinyMCE,我爱过恨过,也哭过笑过…
1 | var reg = /^[\u4e00-\u9fffa-zA-Z]{1,15}$/; |
大于0的所有数,小数点后保留两位小数:
1 | /^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,8}\.\d{0,2}$|^[1-9]\d{0,8}$/ |
正整数(不包括0)
1 | /^\+?[1-9][0-9]*$/ |
正整数(包括0)
1 | /^\d+$/ |
大于0的整数—使用这个
1 | /^[1-9]\d*$/ // 表示所有大于等于1的整数(整数第一位不为0,后面的随意) |
1 | // 用户名正则,4到16位(字母,数字,下划线,减号) |
date(日期格式不正确)
1 | /^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/ |
email(邮箱格式不正确)
1 | /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ |
identity(请输入正确的身份证号)
1 | /(^\d{15}$)|(^\d{17}(x|X|\d)$)/ |
phone(请输入正确的手机号)
1 | /^1\d{10}$/ |
required(必填项不能为空)
1 | /[\S]+/ |
url(链接格式不正确)
1 | /(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/ |
请输入数字/小数点
1 |
最多只能输入两位小数
1 |
判断是否为数字
1 | isNaN(Number(money)) |
只能输入百分比正则(数字+%)
1 |
判断是否是非数字值
1 | isNaN() |
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
正浮点数正则表达式
1 | /^(\d+)(\.\d+)?$/.test() |
url正则表达式
1 | /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?$/ |
0-100的正整数
1 | /^(?:0|[1-9][0-9]?|100)$/ |
数字/小大写字母/(30个字以内)
1 | /^[A-Za-z0-9]{1,30}$/ |
只能输入汉字(30个字以内)
1 | /^[\u4e00-\u9fa5]{1,30}$/ |
2-6位汉字
1 | /^[\u4E00-\u9FA5]{2,6}$/ |
不能输入汉字
1 | /^[^\u4e00-\u9fa5]{0,}$/ |
JavaScript代码:
1 | var pattern = /[\u4e00-\u9fa5]/, |
用户名—3-12位字符(大小写字母或数字)
1 | /^[A-Za-z0-9_]{3,12}$/ |
用户密码—6-16位
1 | /^[A-Za-z0-9!@#$%^&*()<>,.?-_+=`~]{6,16}$/ |
昵称
1 | /^[a-zA-Z\u4e00-\u9fa5]{1,10}$/ |
身份证
1 | /^[1-9]\d{5}(19|20)\d{2}[01]\d[0123]\d\d{3}[xX\d]$/ |
身份证号码
1 | /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/ |
匹配0到100之间的正整数的正则表达式
1 | /^(?:0|[1-9][0-9]?|100)$/ |
匹配1到100之间的正整数的正则表达式
1 | /^(?:1|[1-9][0-9]?|100)$/ |
1 | /^[1-9]\d{4,10}$/ |
手机号
1 | /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/ |
邮件
1 | /^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ |
电话
1 | /^0\d{2,3}-\d{7,8}$/ |
name/姓名/用户名
1 | /^[\u4e00-\u9fa5]{2,}$/ |
密码强度
1 | inp1.onkeyup = function () { |
regular.config.js
1 | export const regExpConfig = { |
0-10
,支持一位小数,包括10.0
1 | ^(10(\.0)?|[0-9](\.[0-9])?)$ |
大于等于0小于等于100正数的正则表达式(0≤x≤100)
1 | 可以有小数:^100$|^(\d|[1-9]\d)(\.\d+)*$ |
20位字符以内的中英文或数字
1 | /^[A-Za-z0-9_\x{4e00}-\x{9fa5}]+$/u |
15位字符以内的大小写字母或数字
1 | /^[A-Za-z0-9]{1,15}$/ |
6-18位至少包含数字、大小字母中的两种
1 | /^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)\S+$/ |
socket.io官方文档中文版——知乎博客
Socket.IO 客户端不是 WebSocket 实现,因此无法与 WebSocket 服务器建立连接,即使transports: ["websocket"]
1 | yarn add socket.io |
使用 µWebSockets.js {#usage-with-µwebsocketsjs}
1 | yarn add uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0 |
1 | https.createServer([options][, requestListener]) |
Konva(基于canvas的绘图库)
https://gitee.com/jepsonpp/draw-and-guess
socket发送一个connection,io收到了一个socket,就创立了连接(connected)
socket发送一个disconnection,就失去了连接
当socket发送一个input事件,携带着message数据,当io接收到之后,可能对message做相应的处理,然后返回data数据,当socket接收到data数据,可以对视图做更新处理。
CDN
https://cdnjs.com/libraries/socket.io
Vue 使用 Vue-socket.io 实现即时聊天应用(Vue3连接原理分析)
Vue 使用 Apache Echarts 绘制地图(省市、地区)
socket.io中的pingtimeout和pingInterval
vue.config.js
1 | module.exports = { |
src/socket/index.js
1 | import io from 'socket.io-client' |
基本语法:
1.创建连接: const socket = io[ 地址]
2.发送消息: socket.emit(消息type类型,消息内容,接收到消息的回调函致)
3.监听消息:socket.on(事件type类型,接收到消息的回调国数)
为什么需要这个模块:
接收服务器
消息发送消息到服务器
构建步骤:
安装依赖包:yarn add socket.io-client
创建src/socket/index.js
模块文件,编写模块内容
main.js
中导入
vue.config.js
配置网络代理
启动后台server,测试接口