我正在参加「掘金·启航计划」
本篇文章将探索正则表达式的功能
在前端,输入金额时,需要对输入值进行验证,只能出现金额和小数点,或者有些值需要保留2位小数点时,那么通过正则表达式验证就非常的方便和高效
【正则表达式特点】
1)文本模式,能读懂字符串匹配规则
2)写法
var re=new RegExp('规则', '可选参数');
var re=/规则/修饰参数;
3)修改符
| 编号 | 语言或插件 | 修饰符 | 说明 |
|---|---|---|---|
| 1 | 正则表达式 | g | 可以查找字符串中所有的匹配项 |
| 2 | 正则表达式 | i | 不区分大小写匹配 |
| 3 | 正则表达式 | m | 可以使^和$匹配一段文本中每行的开始和结束位置。 g只匹配第一行,添加m之后实现多行。 以下实例字符串中使用\n来换行 |
| 4 | 正则表达式 | s | 默认情况下的圆点 . 是 匹配除换行符\n之外的任何字符,加上s之后,.中包含换行符\n |
【保留纯数字正则表达式解析】
'a1b2c3d'.replace(/[^\d]/g, "")
1)//g,为正则表达式写法之一,g是修饰符,全匹配
2)//i,如果不加修饰符,那么结果如下
只清匹配清除了第一个
3)中阔号[]
匹配中括号内的字符中的任意一个,比如:清除字符串中有abc字符
'a1b2c3d'.replace(/[abc]/g, "")
4)^符号,以紧挨的元素开头
相反的符号是$,以紧挨的元素结尾
5)\d,匹配一个数字,0-9
6)组合理解,[^\d]
匹配与数字靠近的字符
【保留1位小数点】
a13.215.5.55.'.replace(/[^\d\.]/g, "").replace('.', "@#@").replace(/[\.]/g, "").replace('@#@', ".")
通过上面正则表达式的分析,实现保留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')
1)2.$3,表示匹配出对应的第一、第二、第三个表达式
2)如果想保留1位小数,那么第三个表达式改为:(\d)