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
    评论
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[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"*$。 只能输入长度为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地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。 验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。 验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。 匹配中文字符正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值