string.localeCompare(target)
比较两个字符串的排列顺序(标准是unicode编码)
返回值
返回说明比较结果的数字。
如果 *string* 小于 *target*,则 `localeCompare()` 返回小于 0 的数(-1)。
如果 *string* 大于 *target*,则该方法返回大于 0 的数(1)。
如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。
栗子
let text1 = "A";
let text2 = "a";
let result = text1.localeCompare(text2);
console.log('result',result)
// result 1
let text1 = "a";
let text2 = "A";
let result = text1.localeCompare(text2);
console.log('result',result)
// result -1
let text1 = "A";
let text2 = "C";
let result = text1.localeCompare(text2);
console.log('result',result)
// result -1
let text1 = "c";
let text2 = "b";
let result = text1.localeCompare(text2);
console.log('result',result)
// result 1
let text1 = "c";
let text2 = "c";
let result = text1.localeCompare(text2);
console.log('result',result)
// result 0
string.toLowerCase()
将字符串所有字母转成小写
AntD-Select组件
<Select
showSearch
placeholder="请选择流程状态"
optionFilterProp="children"
filterOption={(input, option) => (option!.children as unknown as string).includes(input)}
filterSort={(optionA, optionB) =>
(optionA!.children as unknown as string)
.toLowerCase()
.localeCompare((optionB!.children as unknown as string).toLowerCase())}>
<Select.Option value="1525">A</Select.Option>
<Select.Option value="1527">B</Select.Option>
<Select.Option value="1527">C</Select.Option>
</Select>
| 标题 | |||
|---|---|---|---|
| showSearch | 配置是否可搜索 | boolean | 单选为 false,多选为 true |
| optionFilterProp | 搜索时过滤对应的 option 属性,如设置为 children 表示对内嵌内容进行搜索。若通过 options 属性配置选项内容,建议设置 optionFilterProp="label" 来对内容进行搜索。 | string | value |
| filterOption | 是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false | boolean or function(inputValue, option) | true |
| filterSort | 搜索时对筛选结果项的排序函数, 类似Array.sort里的 compareFunction | (optionA: Option, optionB: Option) => number | - |
正则表达式汇总
验证数字:/^[0-9]*$/
验证n位的数字:/^\d{n}$/
验证至少n位数字:/^\d{n,}$/
验证m-n位的数字:/^\d{m,n}$/
验证零和非零开头的数字:/^(0|[1-9][0-9]*)$/
验证有两位小数的正实数:/^[0-9]+(.[0-9]{2})?$/
验证有1-3位小数的正实数:/^[0-9]+(.[0-9]{1,3})?$/
验证非零的正整数:/^\+?[1-9][0-9]*$/
验证非零的负整数:/^\-[1-9][0-9]*$/
验证非负整数(正整数 + 0)/ ^\d+$/
验证非正整数(负整数 + 0) /^((-\d+)|(0+))$/
验证长度为3的字符:/^.{3}$/
验证由26个英文字母组成的字符串:/^[A-Za-z]+$/
验证由26个大写英文字母组成的字符串:/^[A-Z]+$/
验证由26个小写英文字母组成的字符串:/^[a-z]+$/
验证由数字和26个英文字母组成的字符串:/^[A-Za-z0-9]+$/
验证由数字、26个英文字母或者下划线组成的字符串:/^\w+$/
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:/^[\u4e00-\u9fa5],{0,}$/
验证Email地址:/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
验证InternetURL:/^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$/
验证电话号码:/^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/
验证身份证号(15位或18位数字):/^\d{15}|\d{}18$/
验证一年的12个月:/^(0?[1-9]|1[0-2])$/
验证一个月的31天:/^((0?[1-9])|((1|2)[0-9])|30|31)$ /
整数:/^-?\d+$/
非负浮点数(正浮点数 + 0):/^\d+(\.\d+)?$/
正浮点数: /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/
非正浮点数(负浮点数 + 0):/ ^((-\d+(\.\d+)?)|(0+(\.0+)?))$/
负浮点数:/ ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/
浮点数: /^(-?\d+)(\.\d+)?$/
JSON.parse()
将Json格式的数据转换为Objecct格式,一般用于调用后端接口对返回的数据做处理。
例如我们从服务器接收了以下数据:
{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }
我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:
const obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
// {name: 'runoob', alexa: 10000, site: 'www.runoob.com'}
JOSN.stringfy()
例如我们向服务器发送以下数据:
var obj = { name:"runoob", alexa:10000, site:"www.runoob.com"};
我们使用 JSON.stringify() 方法处理以上数据,将其转换为字符串:
var myJSON = JSON.stringify(obj);
// {"name":"runoob","alexa":10000,"site":"www.runoob.com"}
Input 使用技巧总结
exceljs库
读取、操作电子表格数据和样式并将其写入 XLSX 和 JSON。
作为项目从 Excel 电子表格文件逆向工程
import ExcelJS, { Column } from 'exceljs';
...
// 创建工作簿
const workbook = new ExcelJS.Workbook();
// 设置属性
workbook.title = WORKFLOW_NAME + '导入模板';
workbook.created = new Date();
workbook.modified = new Date();
workbook.lastPrinted = new Date();
// 添加表addWorksheet
const sheet = workbook.addWorksheet('表名');
中文npm文档:exceljs中文文档