js正则校验正负数字,且只保留一位小数,找到不匹配字符位置

正负数字校验,小数点后只保留一位有四种情况(正负数,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方法是只能找到第一个不符合正则表达式中的字符位置,所以常用来检测输入框中刚输入的字符是不是不符合正则,不符合的话就可以利用这个字符的位置截取掉它,没必要清空输入框

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值