正则表达式匹配有效的整数或十进制数(可能是正数或负数)

时间:2016-11-23 08:24:03

标签: javascript regex extjs textfield

我希望我的ExtJS文本字段只允许数字和小数(正数和负数)。我需要一个正则表达式来允许整数或十进制数,可以是正数或负数。 应该匹配 -

1)123
 2)123.23
 3)-123
 4)-123.23

不应匹配
   1) - 123    2)-2323-
   3)23.23.23
   4)34..34

3 个答案:

答案 0 :(得分:2)

^-?((0(\.[0-9]+)?)|([1-9]+[0-9]*(\.[0-9]+)?))$link

经过测试,它适用于

0
1
12
123
0.1
1.12
12.0123
-1
-12
-0.1
-1.12
-12.0123
-0

dosnt工作:

--123
-2323-
23.23.23
34..34

答案 1 :(得分:1)

^-?(0|([1-9][0-9]*))(\.[0-9]+)?$

它不能与

一起使用
  • 0123由于领先0无意义
    1. 由于小数点后没有数字
  • .123由于十进制前没有数字

https://regex101.com/r/d3q4TI/1尝试一下

答案 2 :(得分:-1)

试试这个

const regex = /^([-])?\d+(\.\d+)?$/

const validInputs = [123, 123.23, -123, -123.23, '-123.23', '-01.123']
const invalidInputs = ['--123', '-2323-', '23.23.23', '34..34']

for (const item of validInputs) {
  console.log(`test ${item} => ${regex.test(item)}`)
}

console.log('=======================')

for (const item of invalidInputs) {
  console.log(`test ${item} => ${regex.test(item)}`)
}