下面的正则是校验数字的,如果输入其它非法字符或者文字的话会匹配为空字符串,但遇到下面几种情况就不行了,有大神可以把下面正则改进下吗或者有其它更好的正则表达式吗letnum_1='--150'letnum_2='--150..55'letnum_3='150..15'num_1.replace(/[^\-?\d.]/g,'')//--150想要的结果是-150num_2.replace(/[^\-?\d.]/g,'')//--150..55想要的结果是-150.55num_3.replace(/[^\-?\d.]/g,'')//150..15想要的结果是150.55
2 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
没理解需求。。。--150..55还变成--15055?以下我想的实现方式,你可以参考下letnum='--150..55';letre=/\-?\d+\.?/;//获取开头letresult=re.exec(num)[0];//将开头替换成#num=num.replace(/\-?\d+\.?/,'#')//将所有非数字替换成空num=num.replace(/[^\d]/g,'')//把开头拼接进去result=result+num;
胡子哥哥
TA贡献1825条经验 获得超6个赞
functionformat(value=``){returnvalue.replace(/(\D)\1+/gu,`$1`);}format(`--150`);//>"-150"format(`--150..55`);//>"-150.55"format(`150..15`);//>"150.15"
添加回答
举报
0/150
提交
取消