将正则表达式中的组标记为可选

时间:2014-04-15 01:53:46

标签: javascript regex

我需要在发送之前使用javascript在我的表单上验证一些值。仅接受数字和一个逗号或点。逗号或点是可选的。 例如,值o' 1.0',' 1,0'是有效的。价值观' 1',' .0,' 1 ..'或' 1..0'无效。所以,正确的值就像浮点数。

换句话说,digits[optional: one comma or dot]digits是正确的字符串。

我写了以下正则表达式:/^([0-9]+)[.|,]{0,1}[0-9]+$/。我工作正确,除了一个案例 - 当值是单个数字时。 如何使正则表达式正常工作?

2 个答案:

答案 0 :(得分:2)

您可以使用/^([0-9]+)([.,][0-9]+)?$/我强制使用一个点或逗号后跟数字,使整个(点/逗号数字)部分可选。

此外,[.|,]匹配点,逗号或竖线(|)。 [.,]只匹配点和逗号。

(您之前的正则表达式不能用于单个数字的原因是因为您的模式需要与第一个[0-9]+ 匹配的内容以及点/逗号后的第二个[0-9]+如果你愿意的话,你也可以做^([0-9]+)[.,]?[0-9]*$

答案 1 :(得分:1)

怎么样:

/^([0-9]+)([.,][0-9])?$/

我假设您需要第一个用于捕获的parens。你可以让第二对不能捕获。