数字
千位符
<InputNumber
defaultValue={1000}
formatter={value => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}
parser={value => value.replace(/\$\s?|(,*)/g, '')}
onChange={onChange}
/>
<InputNumber
defaultValue={100}
min={0}
max={100}
formatter={value => `${value}%`}
parser={value => value.replace('%', '')}
onChange={onChange}
/>
保留两位小数1
function returnFloat(value) {
var value = Math.round(parseFloat(value) * 100) / 100;
var xsd = value.toString().split(".");
if (xsd.length == 1) {
value = value.toString() + ".00";
return value;
}
if (xsd.length > 1) {
if (xsd[1].length < 2) {
value = value.toString() + "0";
}
return value;
}
}
var num = 3.1;
console.log(returnFloat(num));
保留两位小数2
/**
* 格式化input输入的数字
* @param v 输入的值
* @param fix 保留的几位小数点,0代表只能输入整数
* @param max 最大的输入的数字
* @returns 返回格式后的结果
*/
function parseNumber(v = 0, fix = 0, max = 999999) {
v = `$ {
v
}`;
if (!v) return 0;
if (fix === 0) {
v = v.replace(/[^\d|\.]/g, '');
} else {
v = v.replace(/[^\d|\.]/g, '');
const valueArr = v.split('.');
if (valueArr.length > 1) {
//处理当输入 .33 的情况
if (valueArr[0] === '') {
v = v.substring(0, 3);
} else {
const reg = new RegExp('^(\\d+)\.(\\d{0,2}).*$');
v = v.replace(reg, '$1.$2');
}
}
}
if (v * 1 > max) {
return v.substring(0, 6)
}
return v;
}
完美的保留数字位数
/*
* @param num {Number} 处理的数字
* @param w {Number} 保留的位数
* return {Number|String} 当处理整数的时候返回处理过后的数字,当处理的是小数的时候,返回的是字符串。
*
*/
function numberFixed(num, w) {
if (!w) {
return num;
}
const n = parseFloat(num).toFixed(w + 1);
const nums = n.split('.');
if (nums.length === 1) {
return +n;
}
if (nums.length > 1) {
return (nums[0] + '.' + nums[1].substring(0, w));
}
}
分离[]中的字符串
'[国家]中国[民族]汉[颜色]红色'.replace(/\[(.+?)\]([^\[.]+)/g,function(rs,input1,input2){
console.log(rs,input1,input2)
})
// 打印----------->
// [国家]中国 国家 中国
// [民族]汉 民族 汉
// [颜色]红色 颜色 红色
分析:分离出[]中的内容,匹配字符串的模式是 []中包含任何内容(.+?) 并且结尾中不包含[或者- [^[-]
注意: .?为非贪婪匹配 .为贪婪匹配
'[国家]中国-[民族]汉-[颜色]红色'.replace(/\[(.+?)\]([^\[\-.]+)/g,function(rs,input1,input2){
console.log(rs,input1,input2)
})
// 打印----------->
// [国家]中国 国家 中国
// [民族]汉 民族 汉
// [颜色]红色 颜色 红色
正则表达式之?=和?!的用法
Character:x(?=y) Meaning:Matches x only if x is followed by y.
解释:当x后面跟着y(即y的正则匹配成功)的时候,匹配成功
Character:x(?!y) Meaning:Matches a number only if it is not followed by a decimal point.
解释:当x后面跟的不是y(即y的正则匹配成功)的时候,匹配成功
例子
// 定义
let reg1 = new RegExp('Kim(?=Yin)');
let reg2 = new RegExp('Kim(?!Yin)');
// 测试1
reg1.test('Kim'); // false
reg2.test('Kim'); // true
// 测试2
reg1.test('KimY'); // false
reg2.test('KimY'); // true
// 测试3
reg1.test('KimYin'); // true
reg2.test('KimYin'); // false