用于数字的指令的正则表达式

时间:2019-06-14 14:56:21

标签: regex angular

我有一个用于输入角度应用程序的指令。

我正在建立用于接受的正则表达式:

  • 1,2,3.2
  • 1222,23
  • 333333

不接受:

  • 1,333
  • 132,.1
  • -123

我必须逐个字符检查char,这不是在输入中输入整数。我的尝试不起作用。

^[,]{0,1}\d{0,10}[,]{0,1}([.]?\d{0,2})

1 个答案:

答案 0 :(得分:1)

在大多数情况下,您可以使用

^\d+(?:,\d+)*(?:\.\d+)?$ // 432 or 4.653 or 1,44,43211 or 1,4456,43211754.876597

请参见regex demoregex graph

enter image description here

详细信息

  • ^-字符串的开头
  • \d+-1个以上数字
  • (?:,\d+)*-重复,和1个以上数字0个或更多
  • (?:\.\d+)?-.和1个以上数字的1或0重复
  • $-字符串的结尾。

使用限制量词和超前来施加长度限制。例如:

^(?!(?:,?\d){6})\d+(?:,\d+)*(?:\.\d{1,3})?$
 ^^^^^^^^^^^^^^^

如果数字的整数部分中有6个或更多位数,则(?!(?:,?\d){6})否定超前查询将使匹配失败。如果您想限制整数长度,请将前行更改为(?!.{6}),它将仅匹配最多5个字符的数字:11.5535.99,而不是{{ 1}}(= 6个字符)。