【发布时间】:2012-10-18 12:43:21
【问题描述】:
我需要允许用户在文本框中只输入整数 (33) 和浮点数 (33.343)。
下面是我的正则表达式查询,但它不能正常工作。它允许用户输入浮点值,但在 int 值上给出错误。但我也需要允许用户输入 int。当用户输入任何其他类型的值时,它工作正常并给出错误消息。
/^[0-9]*[.][0-9]*$/
【问题讨论】:
标签: javascript regex string
我需要允许用户在文本框中只输入整数 (33) 和浮点数 (33.343)。
下面是我的正则表达式查询,但它不能正常工作。它允许用户输入浮点值,但在 int 值上给出错误。但我也需要允许用户输入 int。当用户输入任何其他类型的值时,它工作正常并给出错误消息。
/^[0-9]*[.][0-9]*$/
【问题讨论】:
标签: javascript regex string
将点及其后的部分设为可选:
"^\d+(?:\.\d+|)$"
也更喜欢\d 而不是[0-9],不要使用*,因为那时你允许. 两边都没有数字的可能性
这将接受:
1
1.23
但不是:
.1
23.
是否需要这种行为取决于您。
【讨论】:
.123 或 123. - 两者都是有效的数字/格式
warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
尝试:
/^[0-9]+(?:\.[0-9]+)?$/
【讨论】:
.123 或123. 等有效数字不匹配
parseInt 一起使用,但我虽然 OP 想要有效的整数并以 visual 方式浮动。
使用正则表达式
^(?=.*\d)\d*(?:\.\d*)?$
这将匹配例如:
1234
123.
1.23
12.3
0.12
.123
【讨论】:
33. 是一个有效的数字/格式,所以...?最好保持允许:)
+而不是*
1. 视为 int,它会发出警告说它必须将 double 转换为 int 并丢失精度。所以这真的取决于你认为什么是有效的。