正负数字校验,小数点后只保留一位有四种情况(正负数,0或非0开头)
1、正负数非0开头,小数后只能有一位小数
// 正数非0开头
let re = /^(?!0)\d+(.[0-9]{1})?$/; // ?!0代表匹配一次非0开头的,$代表结尾,? 代表匹配一次
console.log(re.test(11)) // true
console.log(re.test(11.12)) // false
console.log(re.test(0.1)) // false
console.log(re.test(11.1)) // true
// 负数非0开头
let re1 = /^-(?!0)\d+(.[0-9]{1})?$/; // 以-非0开头
console.log(re1.test(11)) // false
console.log(re1.test(-11.12)) // false
console.log(re1.test(-0.1)) // false
console.log(re1.test(-11.1)) // true
2、正负数以0开头,小数后只能有一位小数
// 正数0开头,后面跟小数点带一位数字
let re2 = /^0.[0-9]?$/; // ?!0代表匹配一次非0开头的,$代表结尾,? 代表匹配一次
console.log(re2.test(-0.1)) // false
console.log(re2.test(0.12)) // false
console.log(re2.test(0.1)) // true
console.log(re2.test(11.1)) // false
// 负数非0开头
let re3 = /^-0.[0-9]?$/; // 以-非0开头
console.log(re3.test(11)) // false
console.log(re3.test(-0.0)) // true
console.log(re3.test(-0.1)) // true
console.log(re3.test(-11.1)) // false
以上合起来就是判断一个数是否为正负数,并且是否只有一位小数,但是这并不包括0,所以还需要加上re = /^0?$/
五个表达式合在一起进行判断。
要想找出字符串中不匹配字符的位置,就需要用到正则表达式中的exec
方法
let re = /\.\.|。。|[;?<>|^&$]/i;
console.log(re.exec('dsda&da'))
// 执行re.exec打印出的结果,主要用的就是里面的index属性,找到不匹配的字符位置
// re.exec('dsda&da').index = 4
[0: '&', index: 4, input: 'dsda&da', groups: undefined]
exec
方法是只能找到第一个不符合正则表达式中的字符位置,所以常用来检测输入框中刚输入的字符是不是不符合正则,不符合的话就可以利用这个字符的位置截取掉它,没必要清空输入框