<a-input placeholder="" v-model:value="value1"
@input="(e) => limitInput(2,e.target.value)"
/>
methods: {
// 校验输入框输入的内容
limitInput(type, value) {
if(type == 1) {// 只能输入正整数
let newValue =
("" + value) // 第一步:转成字符串
.replace(/^(0+)|[^\d]+/g, "")// 只能输入正整数
console.log('newValue', newValue)
} else if(type == 2) {// 能输入正整数或正两位的小数
let newValue =
("" + value) // 第一步:转成字符串
.replace(/[^\d^\.]+/g, "") // 第二步:把不是数字,不是小数点的过滤掉
.replace(/^0+(\d)/, "$1") // 第三步:第一位0开头,0后面为数字,则过滤掉,取后面的数字
.replace(/^\./, "0.") // 第四步:如果输入的第一位为小数点,则替换成 0. 实现自动补全
.match(/^\d*(\.?\d{0,2})/g)[0] || ""; // 第五步:最终匹配得到结果 以数字开头,只有一个小数点,而且小数点后面只能有0到2位小数
console.log('newValue', newValue)
}
},
// 能输入数字,负数,小数(保留两位)
limitInput2(key, value, id) {
if(isNaN(value) && !/^-$/.test(value)){
value="";
}
if(!/^[+-]?\d*\.{0,1}\d{0,1}$/.test(value)){
value=value.replace(/\.\d{2,}$/,value.substr(value.indexOf('.'),3));
}
}
}
其他正则(待验证):
// 匹配模式主机名端口号
export const SCHEMEHOSTNAME_REGEX = /(^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?)\//i
// 匹配中文字符
export const CHN_REGEX = /[\u4e00-\u9fa5]/
// 匹配双字节字符
export const DOUBLE_BYTE_REGEX = /[^\x00-\xff]/i
// 只能输入数字
export const ONLY_NUMBER_REGEX = /^\d+$/
// 正整数【不包含0】
export const INTEGER_REGEX = /^[1-9]\d*$/
// 0~100整数
export const ZERO_TO_HUNDRED_INTEGER_EGEX = /^(?:[1-9]?\d|100)$/
// 只能由英文、数字、下划线组成
export const ONLY_ENG_NUM_UNDERLINE_REGEX = /^\w+$/
// 只能由小写英文和数字组成
export const ONLY_ENG_NUM_REGEX = /^[a-z0-9]+$/i
// 只能由大写英文字母组成
export const ONLY_CAPITAL_ENG_REGEX = /^[A-Z]+$/
// 只能由小写英文字母组成
export const ONLY_LOWER_ENG_REGEX = /^[a-z]+$/i
// 只能由英文字母数字组成
export const ENG_REGEX = /^[A-Za-z0-9]+$/
// 国内手机号
export const PHONE_REGEX = /^[1][0-9]{10}$/
// 匹配手机号(包含虚拟运营商号段)
export const MOBILE_REGEX = /^(0|86|17951)?(13[0-9]|15[012356789]|17[015678]|18[0-9]|14[57])[0-9]{8}$/
// 匹配Email
export const EMAIL_REGEX = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
// 匹配URL
export const URL_REGEX = /^(https?|ftp|file):\/\/.+$/i
// 匹配身份证号码
export const ID_REGEX = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
// 匹配邮编
export const ZIP_CODE = /^[1-9]\d{5}(?!\d)$/
// 匹配文本中的url(全局且忽略大小写)
export const URL_IN_TEXT = /((((https?|ftp?):(?:\/\/)?)(?:[-;:&=\+\$]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\?\+=&;:%!\/@.\w_]*)#?(?:[-\+=&;%!\?\/@.\w_]*))?)/ig
// 获取文件后缀
export const FILE_FORMAT_REGEX = /[^\.]+$/
// 保留一位小数
export const ONE_DIGIT_DECIMAL_REGEX = /^\d+(\.\d{1})?$/
// 最多保留两位小数
export const TWO_DIGIT_DECIMAL_REGEX = /^\d+(\.\d{1,2})?$/
// 范围:[0.01,9999.99]
export const TWO_DIGIT_PRICE_REGEX = /^0\.\d{1,2}$|^[1-9]\d{0,3}\.\d{1,2}$|^[1-9]\d{0,3}$/
// 范围:[0.01,9999999.99]
export const TWO_DIGIT_PRICE_MAX_REGEX = /^0\.\d{1,2}$|^[1-9]\d{0,6}\.\d{1,2}$|^[1-9]\d{0,6}$/
//
export const HIT_PRICE_REGEX = /^0\.\d{1,2}$|^[1-9]\d{0,3}\.\d{1,2}$|^[1-9]\d{0,3}$|^[0,1]\d{0,4}\.\d{1,2}$|^[0-1]\d{0,4}$|^(20000)$/
// source字母或数字20位
export const TWENTY_NUM_LETTER_REGEX = /^[A-Za-z]{0,20}$/
// 匹配中文英文
export const ONLY_CHN_REGEX = /^[\u4e00-\u9fa5a-zA-Z]+$/
// 英文字母
export const ENG = /^[A-Za-z]+$/
// 股份 0.01 ~ 99.99
export const SHARE_SCALE_REGEX = /^\d\.([1-9]{1,2}|[0-9][1-9])$|^[1-9]\d{0,1}(\.\d{1,2}){0,1}$/