关于正则表达式这块也是弱得可怜呀我,望各位大佬赐教!
我先说需求吧。如题:
要求1:必须是数字类型,可以是正整数,也可以是浮点数
要求2:当为正整数时,不能以0开头的正整数,比如01,0023等
要求3:当为浮点数时,保留位数不限
正确的例子:334526...,0.00102...,1.2220...,10.121234...,
我写了几个都行不通,不知道怎么整了!!!
/^\d+(.\d+)?$/
关于正则表达式这块也是弱得可怜呀我,望各位大佬赐教!
我先说需求吧。如题:
要求1:必须是数字类型,可以是正整数,也可以是浮点数
要求2:当为正整数时,不能以0开头的正整数,比如01,0023等
要求3:当为浮点数时,保留位数不限
正确的例子:334526...,0.00102...,1.2220...,10.121234...,
我写了几个都行不通,不知道怎么整了!!!
/^\d+(.\d+)?$/
这样似乎更简单一下,
const test = (val) => console.log(/^(?!0\d)\d+(\.\d+)?$/.test(val))
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
var isNumber = RegExp.prototype.test.bind(/^(0|[1-9]\d*)(\.\d+)?$/);
console.log(isNumber("01"));
console.log(isNumber("0023"));
console.log(isNumber("334526"));
console.log(isNumber("0.00102"));
console.log(isNumber("10.121234"));
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
一般来说我都是从 正则大全 里面找的,VS Code也有这个插件可以用 any-rule
快速找了一下有一个类似的稍微修改了一下,去掉了小数位数限制。
应该可以直接用
/(?:(^[1-9]([0-9]+)|^[0-9])(?:\.[0-9]{1,})?$)|(?:^(?:0)$)/
但是如果你输入的是
test(0123)
那么将会返回true
因为数字类型的0123
会被认为是83
,所以在测试时候需要使用test('0123')
。具体为什么?我提了一个新问题,你可以移步了解 👉 JS中console.log(0123)为什么会输出83?