【前端】使用jQuery探索正则表达时,金额验证、纯数字验证等

365 阅读2分钟

我正在参加「掘金·启航计划」

本篇文章将探索正则表达式的功能
在前端,输入金额时,需要对输入值进行验证,只能出现金额和小数点,或者有些值需要保留2位小数点时,那么通过正则表达式验证就非常的方便和高效

【正则表达式特点】

1)文本模式,能读懂字符串匹配规则
2)写法
var re=new RegExp('规则', '可选参数');
var re=/规则/修饰参数;
3)修改符

编号语言或插件修饰符说明
1正则表达式g可以查找字符串中所有的匹配项
2正则表达式i不区分大小写匹配
3正则表达式m可以使^和$匹配一段文本中每行的开始和结束位置。 g只匹配第一行,添加m之后实现多行。 以下实例字符串中使用\n来换行
4正则表达式s默认情况下的圆点 . 是 匹配除换行符\n之外的任何字符,加上s之后,.中包含换行符\n

【保留纯数字正则表达式解析】

image.png

'a1b2c3d'.replace(/[^\d]/g, "")

1)//g,为正则表达式写法之一,g是修饰符,全匹配
2)//i,如果不加修饰符,那么结果如下
只清匹配清除了第一个
image.png

3)中阔号[]
匹配中括号内的字符中的任意一个,比如:清除字符串中有abc字符
'a1b2c3d'.replace(/[abc]/g, "")

image.png

4)^符号,以紧挨的元素开头
相反的符号是$,以紧挨的元素结尾
5)\d,匹配一个数字,0-9
6)组合理解,[^\d]
匹配与数字靠近的字符

image.png

【保留1位小数点】

a13.215.5.55.'.replace(/[^\d\.]/g, "").replace('.', "@#@").replace(/[\.]/g, "").replace('@#@', ".")

image.png

通过上面正则表达式的分析,实现保留2位小数,这里用到了一个小技巧
1)实现保留1位小数点
2)既然是小数,那么就会有小数点符号
3)表达式:replace(/[^\d.]/g, "")
清除非数字和小数点的符号 4)表达式:replace('.', "@#@")
先将第一个小数点使用符号进行占位代替 5)表达式:.replace(/[.]/g, "")
匹配字符串中有小数点的去掉 6)表达式,.replace('@#@', ".")
最后再将占位符替换回来小数点

【保留2位小数点】

通过上面步骤清除非数字和小数点后,就可以使用下面表达式保留小数点位数了

'132.25545'.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')

image.png

1)112.$3,表示匹配出对应的第一、第二、第三个表达式
2)如果想保留1位小数,那么第三个表达式改为:(\d)

image.png