让个正则给搞疯了!!

2017-12-05 13:35:58 +08:00
 jalena

好久没写这些东西!!

搞了一早上,就是没弄对!!

大神帮我看看呐。。

需求: 匹配 0.5、1、1.5 这样的数据(不能为负数)

var reg = new RegExp('^(^[0-])|(\\d+(\\.[05])?$)','g');
var str = '1';
var str1 = '1.5';
var str2 = '0.5';
var str3 = '0';
var str4 = '0.3';
var str5 = '-1';
var str6 = '-1.5';
var str7 = '2';
var str8 = '2.5';
console.log(str + ">>>>>>>>>>>>" + reg.test(str));
console.log(str1 + ">>>>>>>>>>>>" + reg.test(str1));
console.log(str2 + ">>>>>>>>>>>>" + reg.test(str2));
console.log(str3 + ">>>>>>>>>>>>" + reg.test(str3));
console.log(str4 + ">>>>>>>>>>>>" + reg.test(str4));
console.log(str5 + ">>>>>>>>>>>>" + reg.test(str5));
console.log(str6 + ">>>>>>>>>>>>" + reg.test(str6));
console.log(str7 + ">>>>>>>>>>>>" + reg.test(str7));
console.log(str8 + ">>>>>>>>>>>>" + reg.test(str8));
6959 次点击
所在节点    JavaScript
51 条回复
JerryV2
2017-12-06 08:07:53 +08:00
是必须以 0.5 结尾的数字吗?那就这样呗
^\d+\.5$
FallMonkey
2017-12-06 08:08:45 +08:00
https://regex101.com

怎么还没人提这个神器?
jalena
2017-12-06 09:29:22 +08:00
@JerryV2 0.5 的倍数即可.例如 0.5 , 1,1.5,1.0,2,2.0,2.5 都行
jxie0755
2017-12-06 09:54:48 +08:00
@zpf124 我笑出声了
keenwon
2017-12-06 10:29:05 +08:00
```
var reg = new RegExp('^\\d+(\\.5)?$');
var str = '1';
var str1 = '1.5';
var str2 = '0.5';
var str3 = '0';
var str4 = '0.3';
var str5 = '-1';
var str6 = '-1.5';
var str7 = '2';
var str8 = '2.5';

console.log(str + ">>>>>>>>>>>>" + reg.test(str));
console.log(str1 + ">>>>>>>>>>>>" + reg.test(str1));
console.log(str2 + ">>>>>>>>>>>>" + reg.test(str2));
console.log(str3 + ">>>>>>>>>>>>" + reg.test(str3));
console.log(str4 + ">>>>>>>>>>>>" + reg.test(str4));
console.log(str5 + ">>>>>>>>>>>>" + reg.test(str5));
console.log(str6 + ">>>>>>>>>>>>" + reg.test(str6));
console.log(str7 + ">>>>>>>>>>>>" + reg.test(str7));
console.log(str8 + ">>>>>>>>>>>>" + reg.test(str8));
1>>>>>>>>>>>>true
1.5>>>>>>>>>>>>true
0.5>>>>>>>>>>>>true
0>>>>>>>>>>>>true
0.3>>>>>>>>>>>>false
-1>>>>>>>>>>>>false
-1.5>>>>>>>>>>>>false
2>>>>>>>>>>>>true
2.5>>>>>>>>>>>>true
```
jason19659
2017-12-06 10:38:06 +08:00
^\d+[\.5]*$
为啥要用正则
lain0
2017-12-06 11:24:59 +08:00
Morriaty
2017-12-06 11:41:57 +08:00
r'^\s*[-+]?(\d+(\.\d*)?|\.\d+)(e[-+]?\d+)?\s*$'

可匹配任意实数,包括科学计数 1e10,包括正负号
laoyuan
2017-12-06 11:56:21 +08:00
有开头有结尾的 match,又不是抽取,基础正则

^\d+((\.5)|(\.0))?$
willbefly
2017-12-06 16:35:44 +08:00
^\d+(\.(5|0))?$
匹配 1.0 1.5 等

但有些问题的是 会匹配 0 (应该不匹配) 而且不匹配 1.50 和 1.000 (应该匹配)
alex14
2017-12-06 17:09:27 +08:00
^(?![-])\d+(\.[05])?$

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX