javascript - 请教一个正则。
ringa_lee
ringa_lee 2017-04-11 10:04:23
[JavaScript讨论组]

请填入数字或数字范围,数字范围用短折现隔开。例如“7”、“7.8”、“7.8-8.8”

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
阿神
/^(?:\d|(?:[1-9]\d+))(?:\.(?:\d+)?)?(-(?:\d|(?:[1-9]\d+))(?:\.(?:\d+)?)?)?$/
var regx = /^(?:\d|(?:[1-9]\d+))(?:\.(?:\d+)?)?(-(?:\d|(?:[1-9]\d+))(?:\.(?:\d+)?)?)?$/
arr=['0','0.','0.0','0.1','01','0..','.0','01.0','000','123','0-0','0.-0.','0.0-0.0','0.1-0.5','01-02','0..-0..','.0-.0','01.0-02.0','000-123','123-456','7.1-9.5']
arr.forEach(function(s){console.log((s+'          ').substr(0,10), regx.test(s)?'√':'×')})
0          √
0.         √
0.0        √
0.1        √
01         ×
0..        ×
.0         ×
01.0       ×
000        ×
123        √
0-0        √
0.-0.      √
0.0-0.0    √
0.1-0.5    √
01-02      ×
0..-0..    ×
.0-.0      ×
01.0-02.0  ×
000-123    ×
123-456    √
7.1-9.5    √
ringa_lee

以下这个正则表达式表示输入整数或小数,比如 01.12,012 都是非法的

var reg = /^(((?!0)\d+|0)|((?!0)\d+|0)\.\d+)$/
reg.test('0.12')

基于这个修改

var r2 = /^(((?!0)\d+|0)|((?!0)\d+|0)\.\d+)(-(((?!0)\d+|0)|((?!0)\d+|0)\.\d+))?$/
r2.test('7.8-8.8')

当然你也可以 split('-') 之后数组每一项都满足整数或小数的正则表达式且数组长度是 1 或 2

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号