no message
This commit is contained in:
119
README.md
Normal file
119
README.md
Normal file
@ -0,0 +1,119 @@
|
||||
# vue2-ssr-template
|
||||
|
||||
|
||||
|
||||
### 常用正则表达式
|
||||
|
||||
#### 表单验证
|
||||
|
||||
```
|
||||
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ // 邮箱
|
||||
/^1[3-9]\d{9}$/ // 中国大陆手机号
|
||||
const ID_REGEX = {
|
||||
mainland: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/, // 大陆身份证
|
||||
hongkong: /^[A-Z]{1,2}\d{6}\([0-9A]\)$/, // 香港身份证
|
||||
macau: /^[157]\/\d{6}\(\d\)$/, // 澳门身份证
|
||||
taiwan: /^[A-Z][0-9]{9}$/ // 台湾身份证
|
||||
};
|
||||
/^[a-zA-Z0-9]{6,20}$/ // 6-20位数字或字母
|
||||
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,20}$/ // 6-20位字母+数字组合
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 数字相关
|
||||
|
||||
```
|
||||
/^\d+$/ // 纯数字(整数)
|
||||
/^-?\d+$/ // 整数(含负数)
|
||||
/^\d+(\.\d+)?$/ // 正数(整数 + 小数)
|
||||
/^-?\d+(\.\d+)?$/ // 数字(整数 + 小数 + 负数)
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 字母 & 字符串
|
||||
|
||||
```
|
||||
/^[a-zA-Z]+$/ // 纯英文
|
||||
/^[A-Z]+$/ // 全大写
|
||||
/^[a-z]+$/ // 全小写
|
||||
/^[a-zA-Z0-9]+$/ // 英文 + 数字
|
||||
/^[\u4e00-\u9fa5]+$/ // 纯中文
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 其它
|
||||
|
||||
```
|
||||
/^\s+|\s+$/g // 去除首尾空格(配合 .replace 使用)
|
||||
/[\u4e00-\u9fa5]/ // 匹配中文字符
|
||||
/^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/ // IPv4
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 常用工具函数
|
||||
|
||||
#### 数字 & 字符串
|
||||
|
||||
```
|
||||
export const clamp = (n, min, max) => Math.min(max, Math.max(min, n)); //将数值限制在 [min, max] 区间内
|
||||
export const pad = (n, len = 2) => String(n).padStart(len, '0'); //左侧补0
|
||||
export const capitalize = (s) => (isStr(s) && s ? s.charAt(0).toUpperCase() + s.slice(1) : ''); //单词首字母大写
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 时间格式化
|
||||
|
||||
```
|
||||
/**
|
||||
* 按模板格式化日期(YYYY-MM-DD HH:mm:ss)
|
||||
* @param {Date|number|string} [date=new Date()]
|
||||
* @param {string} [fmt='YYYY-MM-DD HH:mm:ss']
|
||||
* @returns {string}
|
||||
*/
|
||||
export const formatDate = (date = new Date(), fmt = 'YYYY-MM-DD HH:mm:ss') => {
|
||||
const d = date instanceof Date ? date : new Date(date);
|
||||
const rep = {
|
||||
YYYY: d.getFullYear(),
|
||||
MM: pad(d.getMonth() + 1),
|
||||
DD: pad(d.getDate()),
|
||||
HH: pad(d.getHours()),
|
||||
mm: pad(d.getMinutes()),
|
||||
ss: pad(d.getSeconds()),
|
||||
};
|
||||
return fmt.replace(/YYYY|MM|DD|HH|mm|ss/g, (k) => String(rep[k]));
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 复制文本到剪贴板
|
||||
|
||||
```
|
||||
/**
|
||||
* 复制文本到剪贴板(非安全上下文降级方案)
|
||||
* @param {string} text
|
||||
* @returns {Promise<void>|void}
|
||||
*/
|
||||
export const copyText = (text) => {
|
||||
if (typeof navigator !== 'undefined' && navigator.clipboard && window.isSecureContext) {
|
||||
return navigator.clipboard.writeText(text);
|
||||
}
|
||||
const ta = document.createElement('textarea');
|
||||
ta.value = text;
|
||||
ta.style.position = 'fixed';
|
||||
ta.style.opacity = '0';
|
||||
document.body.appendChild(ta);
|
||||
ta.select();
|
||||
document.execCommand('copy');
|
||||
ta.remove();
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
####
|
||||
Reference in New Issue
Block a user